carpent
v2.0.1
Published
Bootstrap and configure any project using its template
Downloads
48
Maintainers
Readme
🔨 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