conventional commit
npm install standard-commit
A zero-config opiniated, commitizen
like command line utility to enforce the
conventional commits and have a clean
changelog with
standard-version.
- standard-commit: Same as git commit but with prompt and formating of the
commit message.
- standard-commitlint runs
commitlint based on your
standard-commit config.
- standard-commithook is meant to be run as a commit-msg git hook to
enforce the convention.
``bash`
npm install -g standard-commit
`bash`
standard-commit --help
`bash`you can create an alias:
git config --global alias.cc '!standard-commit'then use:
git cc
`bash`Usage: standard-commitlint [options...]
Where
-f --from lower end of the commit range to lint.
-t --to upper end of the commit range to lint.
standard-commitlint --help
`bash`CI check before merge request
npx -p standard-commit standard-commitlint --from origin/master
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"
}
}
`bashuse commit script to commit
npm -s run commit
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?: {}
}
``