A sharable commitlint config to enforce conventional commits. Use with @commitlint/cli
.
Install with npm:
npm install --save-dev @commitlint/cli @lcooper/commitlint-config
Install with yarn:
yarn add -D @commitlint/cli @lcooper/commitlint-config
Add the commitlint
field to your package.json
file:
"commitlint": {
"extends": [
"@lcooper",
]
}
Or create a commitlint config file type of your choice in the root folder of your project:
.commitlintrc
{
"extends": [
"@lcooper"
],
}
.commitlintrc.js
module.exports = {
extends: [
'@lcooper',
],
};
Check out the commitlint docs for more details about sharable configs.
You can configure a git commit message hook using husky
, just add it as a devDependency
.
If you are using husky@v9
, follow the instructions on commitlints local setup documentation page.
To configure a husky commit message hook with husky@v4
, add the following field to your package.json
:
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
This config extends @commitlint/config-conventional
, and defines the following types:
Type | Title | Description |
---|---|---|
build |
Builds | Changes that affect the build system or external dependencies |
chore |
Chores | Other changes that don't modify src or test files |
ci |
Continuous Integration | Changes to continuous integration files and scripts |
docs |
Documentation | Changes to documentation |
feat |
Features | A new feature |
fix |
Bug Fixes | A bug fix |
perf |
Performance Improvements | A code change that improves performance |
refactor |
Code Refactoring | A code change that neither fixes a bug nor adds a feature |
release |
Releases | Changes to prepare for a release |
revert |
Reverts | Reverts a previous commit |
style |
Styles | Formatting and white-space changes |
test |
Tests | Adding missing tests or correcting existing tests |
Additionally, the max line length of commit message headers, bodies and footers is 72
characters to enforce wrapping.