Lint commit messages
Demo generated with svg-term-cli
cat docs/assets/commitlint.json | svg-term --out docs/public/assets/commitlint.svg --frame --profile=Seti --height=20 --width=80
- π Be a good 
commitizen - π¦ Share configuration via 
npm - π€ Tap into 
conventional-changelog 
commitlint checks if your commit messages meet the conventional commit format.
In general the pattern mostly looks like this:
type(scope?): subject  #scope is optional; multiple scopes are supported (current delimiter options: "/", "\" and ",")Real world examples can look like this:
chore: run tests on travis ci
fix(server): send cors headers
feat(blog): add comment section
Common types according to commitlint-config-conventional (based on the Angular convention) can be:
- build
 - chore
 - ci
 - docs
 - feat
 - fix
 - perf
 - refactor
 - revert
 - style
 - test
 
These can be modified by your own configuration.
- Local setup - Lint messages on commit with husky
 - CI setup - Lint messages during CI builds
 
- Primary way to interact with commitlint.
 npm install --save-dev @commitlint/cli- Packages: cli
 
- Configuration is picked up from:
.commitlintrc.commitlintrc.json.commitlintrc.yaml.commitlintrc.yml.commitlintrc.js.commitlintrc.cjs.commitlintrc.mjs.commitlintrc.ts.commitlintrc.ctscommitlint.config.jscommitlint.config.cjscommitlint.config.mjscommitlint.config.tscommitlint.config.ctscommitlintfield inpackage.jsoncommitlintfield inpackage.yaml
 - Packages: cli, core
 - See Rules for a complete list of possible rules
 - An example configuration can be found at @commitlint/config-conventional
 
Node v24 changes the way that modules are loaded, and this includes the commitlint config file. If your project does not contain a package.json, commitlint may fail to load the config, resulting in a Please add rules to your commitlint.config.js error message. This can be fixed by doing either of the following:
- Add a 
package.jsonfile, declaring your project as an ES6 module. This can be done easily by runningnpm init es6. - Rename the config file from 
commitlint.config.jstocommitlint.config.mjs. 
A number of shared configurations are available to install and use with commitlint:
- @commitlint/config-angular
 - @commitlint/config-conventional
 - @commitlint/config-lerna-scopes
 - @commitlint/config-nx-scopes
 - @commitlint/config-patternplate
 - @commitlint/config-workspace-scopes
 - conventional-changelog-lint-config-atom
 - conventional-changelog-lint-config-canonical
 
β οΈ If you want to publish your own shareable config then make sure it has a name aligning with the patterncommitlint-config-emoji-logorcommitlint-config-your-config-nameβ then in extend all you have to write isemoji-logoryour-config-name.
Check the main website.
- Alternative, programmatic way to interact with 
commitlint - Packages:
 - See API for a complete list of methods and examples
 
commitlint is considered stable and is used in various projects as a development tool.
- Node.js LTS 
>= 18 - git 
>= 2.13.2 
Security patches will be applied to versions which are not yet EOL.
Features will only be applied to the current main version.
| Release | Initial release | 
|---|---|
| v19 | 02/2024 | 
| v18 | 10/2023 | 
EOL is usually after around a year.
We're not a sponsored OSS project. Therefore we can't promise that we will release patch versions for older releases in a timely manner.
If you are stuck on an older version and need a security patch we're happy if you can provide a PR.
- conventional-changelog Generate a changelog from conventional commit history
 - commitizen Simple commit conventions for internet citizens
 - create-semantic-module CLI for quickly integrating commitizen and commitlint in new or existing projects
 
Copyright by @marionebl. All commitlint packages are released under the MIT license.
commitlint is developed in a mono repository.
git clone [email protected]:conventional-changelog/commitlint.git
cd commitlint
yarn
yarn run build # run build tasks
yarn start # run tests, again on change
yarn run commitlint # run CLIFor more information on how to contribute please take a look at our contribution guide.