Scaffolds a new project using
git checkoutand smart, in-file string replacements. Comes with an API and CLI:npx create-from-git. Runs on Mac, Windows and Linux.
User Stories
-
As a developer of a product, I don't want to repeat myself again and again when I'm going to start a new project. I need a CLI that can copy over an arbitrary, ready-made project template from an arbitrary git repository, but don't clone it and also get the
.gitmetadata, but check it out, and simply replace everything that is namedtemplateName,template-name,template_nameorTemplateNamewith the name of my new project in all files and file names so that I don't have to do that manually again and again. -
As a developer of a framework, I need a library that can generate new projects from templates that I prepared, so that my users can use my CLI or the CLI of that tool to use my framework with ease by not starting from scratch.
Features
- ✅ Generate a new software project from scratch by using
git checkout - ✅ Agnostic to programming language, frameworks etc. pp.
- ✅ Available as a simple API and simple to use CLI
- ✅ Just
5knano sized (ESM, gizpped) - ✅ Tree-shakable and side-effect free
- ✅ Async from the ground up
- ✅ Runs on Windows, Mac, Linux, CI tested
- ✅ First class TypeScript support
- ✅ Only JS Heaven maintained dependencies
- ✅ 100% Unit Test coverage
Example usage (CLI)
npx create-from-git@latest --from https://github.com/jsheaven/template-for-libraries --name MyNewProject
You need at least version 18 of Node.js installed.
Example usage (API, as a library)
Setup
- yarn:
yarn add create-from-git - npm:
npm install create-from-git
ESM
import { createFromGit } from 'create-from-git' try { const statusReport = await createFromGit({ from: 'git@github.com/jsheaven/template-for-libraries', to: '.', projectName: 'MyNewProject', }) } catch (e) { console.error('Scaffolding went wrong: ', e) }
CommonJS
const { createFromGit } = require('create-from-git') // same API like ESM variant