🔨 Carpent
Bootstrap and configure any project using its template -- clone a repository, update data using variables, and more.
💡 Usage
If you want to quickly bootstrap a project, use npx
:
npx carpent
Alternately, you can install the package globally from npm:
npm install --global carpent
Use the CLI:
carpet
Or, import and use the API:
import { carpet } from "carpet";
carpet({
repo: "https://github.com/AnandChowdhary/carpet",
// ...all configuration options here (see API Configuration)
});
Setting up Carpent with your template
If you're building a template repository that others can use, you can add Carpent by creating a .carpentrc
file in the root with the following schema:
{
"questions": [], // Configuration questions to ask
"deleteFiles": [], // List of files to delete
"beforeAll": [], // Scripts to run before process
"afterAll": [] // Scripts to run after process
}
For example:
{
"deleteFiles": [".carpentrc"], // Delete the .carpentrc file
"questions": [
{
"name": "name", // `name` is required in each input
"type": "input", // Let users type an input response
"message": "Project name", // Ask them this question
"files": ["package.json"], // Update the package.json file
"jsonKey": "name" // Change the `name` key in package.json
}
],
"afterAll": ["echo 'Completed!'"] // Run this script at the end
}
Each question under questions
support the following properties:
Property | Description |
---|---|
name (required) |
Internal name for question |
type (required) |
One of Inquirer.js's question types |
message (required) |
Question to ask the user |
default |
Default value for this answer |
choices |
Let users select one of these options |
files |
Update these files |
jsonKey |
Update this JSON key |
find |
Find this value for replacing |
replace |
Repace with this value |
API Configuration
You can specify a key-value pair as the API parameter with the following properties:
Property | Description | Default |
---|---|---|
repo |
Git repository URL | Required |
dir |
Path to directory to create | "carpent" |
license |
License | MIT License |
licenseName |
Full name for license | |
initializeNewRepo |
Initialize new git repository | false |
👩💻 Development
Build TypeScript:
npm run build
Run unit tests and view coverage:
npm run test-without-reporting