carpent
v2.0.1
Published
Bootstrap and configure any project using its template
Downloads
109
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 carpentUse the CLI:
carpetOr, 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 buildRun unit tests and view coverage:
npm run test-without-reporting
