@chore-dev/composer
v1.0.12
Published
Single command project setup! This package automates essential tools for code style, version control, releases, and Docker.
Downloads
6
Maintainers
Readme
composer
Single command project setup! This package automates essential tools for code style, version control, releases, and Docker.
NOTE: This package assists in setting up the following tools. You may click the links below to learn more about each tool.
| IDE | Development | Linting & Prettify | Version control | Deployment | | ----------------------------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------ | | EditorConfig | TypeScript | ESLint@8.0.0 | commitlint | Docker | | | | lint-staged | Git | Release It | | | | Prettier | husky | |
NOTE: Currently fixed ESLint version at latest v8.0.0 due to the following reasons:
- ESLint v9 contains breaking API changes
- The eslint-plugin-react plugin is not compatible with ESLint v9
Table of Contents
Prerequisite
In order to use this package, you project must meet the following requirements:
- Contains a
package.json
file
# NPM
$ npm init
# PNPM
$ pnpm init
# Yarn
$ yarn init
- The directory is a
git
repository (In order to set up husky, commitlint, lint-staged, and Release It)
$ git init
Installation
Install the package as a dev dependency:
# NPM
$ npm install -D @chore-dev/composer
# PNPM
$ pnpm add -D @chore-dev/composer
# Yarn
$ yarn add -D @chore-dev/composer
Usage
- Add the following script to your
package.json
file
You may skip this step if you are using PNPM or Yarn
{
...
"scripts": {
// ...existing scripts
"composer": "composer"
},
...
}
- Run the following command to start the Composer:
# NPM
$ npm run composer [<options>]
# PNPM
$ pnpm composer [<options>]
or # If you have added the script to your `package.json` file
$ pnpm run composer [<options>]
# Yarn
$ yarn composer [<options>]
or # If you have added the script to your `package.json` file
$ yarn run composer [<options>]
Options
| Option | Alias | Description | Example |
| ----------------------- | ----------------- | ------------------------------------------------- | ------------------------ |
| --dry-run
| -D
| Run the command without making any changes | |
| --no-backup
| | Skip creating backup files while running composer | |
| --preset path::string
| -P path::string
| Use a preset file and skip all questions | --preset ./preset.json
|
Preset file
The preset file is a JSON file that contains the configuration for the Composer. The following is the structure of the preset file:
interface Preset {
// Project environment
env: Record<'isBrowser' | 'isNode', boolean>;
framework: 'react' | 'vue' | 'none';
packageManager: 'npm' | 'pnpm' | 'yarn';
styleSheet: 'css' | 'scss' | 'none';
withSyntaxExtension: boolean;
// Tools
commitLint: Record<'createConfig' | 'install' | 'integrate', boolean> | false;
docker: Record<'addIgnores', boolean> | false;
editorConfig: Record<'createConfig', boolean>;
eslint: Record<'addIgnores' | 'createConfig' | 'insertScripts' | 'install', boolean> | false;
git: Record<'addIgnores', boolean> | false;
husky: Record<'insertScripts' | 'install', boolean> | false;
lintStaged: Record<'createConfig' | 'install' | 'integrate', boolean> | false;
prettier: Record<'addIgnores' | 'createConfig' | 'insertScripts' | 'install', boolean> | false;
releaseIt: Record<'createConfig' | 'insertScripts' | 'install', boolean> | false;
typescript: Record<'createConfig' | 'install', boolean> | false;
}
You may also copy the preset file from the Composer by running the following command:
# NPM
$ npm run composer --dry-run
# PNPM
$ pnpm composer --dry-run
or # If you have added the script to your `package.json` file
$ pnpm run composer --dry-run
# Yarn
$ yarn composer --dry-run
or # If you have added the script to your `package.json` file
$ yarn run composer --dry-run
Outputs
Composer may generate the following files according to the tools you have selected:
Click the items below to learn more about customizing them
commitlint
Docker
EditorConfig
ESLint
Git
Husky
- .husky (Directory)