https://github.com/anandchowdhary/carpent
🔨 Bootstrap and configure any project using its template
https://github.com/anandchowdhary/carpent
bootstrapping cli node-ts nodejs typescript
Last synced: about 1 year ago
JSON representation
🔨 Bootstrap and configure any project using its template
- Host: GitHub
- URL: https://github.com/anandchowdhary/carpent
- Owner: AnandChowdhary
- License: mit
- Created: 2020-06-13T16:08:43.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-06-17T20:33:15.000Z (about 2 years ago)
- Last Synced: 2025-04-26T22:25:39.960Z (about 1 year ago)
- Topics: bootstrapping, cli, node-ts, nodejs, typescript
- Language: TypeScript
- Homepage: https://anandchowdhary.github.io/carpent/
- Size: 11 MB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🔨 Carpent
Bootstrap and configure any project using its template -- clone a repository, update data using variables, and more.
[](https://github.com/AnandChowdhary/carpent/actions)
[](https://travis-ci.org/AnandChowdhary/carpent)
[](https://coveralls.io/github/AnandChowdhary/carpent?branch=master)
[](https://libraries.io/npm/carpent)
[](https://github.com/AnandChowdhary/carpent/blob/master/LICENSE)
[](https://snyk.io/test/npm/carpent)
[](https://github.com/AnandChowdhary/node.ts)
[](https://unpkg.com/browse/carpent/dist/index.d.ts)
[](https://www.npmjs.com/package/node.ts)
[](https://www.npmjs.com/package/node.ts)
[](https://github.com/AnandChowdhary/carpent/graphs/contributors)
[](https://github.com/semantic-release/semantic-release)
[](https://www.npmjs.com/package/carpent)
## 💡 Usage
If you want to quickly bootstrap a project, use `npx`:
```bash
npx carpent
```

Alternately, you can install the package globally from [npm](https://www.npmjs.com/package/carpent):
```bash
npm install --global carpent
```
Use the CLI:
```bash
carpet
```
Or, import and use the API:
```ts
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:
```json
{
"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:
```json
{
"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](https://github.com/SBoudrias/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:
```bash
npm run build
```
Run unit tests and view coverage:
```bash
npm run test-without-reporting
```
## 📄 License
[MIT](./LICENSE) © [Anand Chowdhary](https://anandchowdhary.com)