UNPKG

standard-commit

Version:
194 lines (154 loc) 3.87 kB
# standard-commit [![npm version](https://badge.fury.io/js/standard-commit.svg)](https://badge.fury.io/js/standard-commit) A zero-config opiniated, [commitizen](https://github.com/commitizen/cz-cli) like command line utility to enforce the [conventional commits](https://conventionalcommits.org/) and have a clean changelog with [standard-version](https://github.com/conventional-changelog/standard-version). - **standard-commit**: Same as `git commit` but with prompt and formating of the commit message. - **standard-commitlint** runs [commitlint](https://github.com/marionebl/commitlint) based on your standard-commit config. - **standard-commithook** is meant to be run as a `commit-msg` git hook to enforce the convention. ## Usage ```bash npm install -g standard-commit ``` ```bash standard-commit --help ``` ### git alias ```bash # you can create an alias: git config --global alias.cc '!standard-commit' # then use: git cc <option> ``` ### commitlint ```bash # Usage: standard-commitlint [options...] # Where <options> is one of: # -f --from lower end of the commit range to lint. # -t --to upper end of the commit range to lint. standard-commitlint --help ``` ### ci checks ```bash # CI check before merge request npx -p standard-commit standard-commitlint --from origin/master ``` ### repo setup install yorkie (or husky@next) ```bash npm install --save-dev yorkie standard-commit standard-version ``` and setup the scripts and commit-msg hook in your _package.json_ ```json { "scripts": { "commit": "standard-commit", "commitlint": "standard-commitlint", "release": "standard-version" }, "gitHooks": { "commit-msg": "standard-commithook" } } ``` ```bash # use commit script to commit npm -s run commit # use commitlint script to check commit history npm -s run commitlint -- --from origin/master # use release script to create a version commit npm -s run release ``` ## Configuration ```bash standard-commit --init ``` you can configure standard-commit via: - A `.standard-commitrc` file, written in YAML or JSON, with optional extensions: .yaml/.yml/.json. - A `standard-commit.config.js` file that exports an object. - A `standard-commit` key in your package.json file. ```ts { /** * Allowed types * * @default ['feat','fix','chore','docs','style','refactor','test'] */ types?: string[] /** * When set to 'staged', suggest from staged files (git). * When set to 'packages, suggest from package names (monorepo). * When set to an array, the list of scopes. * * @default 'staged' */ scopes?: 'staged' | 'packages' | string[] /** * When set to 'suggest', scope is optional. * When set to 'enforce, scope can not be empty. * When set to false, scope prompt is skipped. * @default false */ promptScope?: 'suggest' | 'enforce' | false /** * whether to strip the scope for scoped packages * @default true */ stripPackageScope?: boolean /** * set to false to skip. * * @default true */ promptBody?: boolean /** * set to false to skip. * * @default true */ promptBreaking?: boolean /** * set to false to skip. * * @default true */ promptIssues?: boolean /** * set to false to skip. * * @default true */ promptConfirm?: boolean /** * set to true to enforce 'Signed-off-by:' in footer. * * @default false */ enforceSignedOffBy?: boolean /** * enforce issue reference when true else for specified list of types. * * @default [] */ enforceIssueRefs?: boolean | string[] /** * enforce issue reference to match the given pattern * * @default ['#'] */ issuePrefixes?: string[] /** * extra commitlint rules * * see http://marionebl.github.io/commitlint/#/reference-rules */ rules?: {} } ```