Skip to content
πŸ““ Lint commit messages
JavaScript TypeScript
Branch: master
Clone or download
Latest commit fbf2389 Oct 16, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci ci: use non-reserved command name Jun 1, 2019
.devcontainer chore: add devcontainer setup Jul 9, 2019
.github fix: replace all repository references with conventional changelog (#561 Jan 31, 2019
.vscode port execute-rule to ts (#660) May 31, 2019
@alias v8.3.1 Oct 16, 2019
@commitlint v8.3.1 Oct 16, 2019
@packages v8.3.0 Oct 16, 2019
docs docs: add simple setup test #775 Aug 22, 2019
.editorconfig feat(travis-cli): add reusable travis command line interface Nov 24, 2017
.gitignore chore: centralize typescript and jest setups (#710) Jul 9, 2019
.prettierignore chore: remove xo in favor of stricter prettier setup (#555) Jan 31, 2019
.travis.yml chore: disable yarn cache #567 Feb 1, 2019
.yarnrc chore: ignore engines by default Jan 31, 2019 v8.3.1 Oct 16, 2019
Dockerfile chore: add turnkey dev setup May 6, 2019 docs: add commitlint-config-jira to shared configurations list (#793) Sep 23, 2019
docker-compose.yml chore: enable ssh agent forwarding in cubicle May 20, 2019
jest.config.js chore: centralize typescript and jest setups (#710) Jul 9, 2019
lerna.json v8.3.1 Oct 16, 2019 docs: extend copyright notice to present Sep 4, 2018
package.json chore: update lerna monorepo Sep 23, 2019
tsconfig.json refactor: port message to typescript (#765) Sep 11, 2019
tsconfig.shared.json chore: centralize typescript and jest setups (#710) Jul 9, 2019
yarn.lock feat(config-conventional): use parser with short breaking change supp… Oct 16, 2019

Get Started | Let's chat slack | Website

Lint commit messages

Demo generated with svg-term-cli

cat docs/assets/commitlint.json | svg-term --out docs/assets/commitlint.svg --frame --profile=Seti --height=20 --width=80

npm latest CircleCI

  • πŸš“ Be a good commitizen
  • πŸ“¦ Share configuration via npm
  • πŸ€– Tap into conventional-changelog


What is commitlint

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

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 the Angular convention) can be:

  • build
  • ci
  • chore
  • docs
  • feat
  • fix
  • perf
  • refactor
  • revert
  • style
  • test

These can be modified by your own configuration.

Benefits using commitlint

Getting started

# Install commitlint cli and conventional config
npm install --save-dev @commitlint/{config-conventional,cli}
# For Windows:
npm install --save-dev @commitlint/config-conventional @commitlint/cli

# Configure commitlint to use conventional config
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

To lint commits before they are created you can use Husky's 'commit-msg' hook:

  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"

Detailed Setup instructions


  • Primary way to interact with commitlint.
  • npm install --save-dev @commitlint/cli
  • Packages: cli


  • Configuration is picked up from commitlint.config.js, .commitlintrc.js, .commitlintrc.json, or .commitlintrc.yml file or a commitlint field in package.json
  • Packages: cli, core
  • See Rules for a complete list of possible rules
  • An example configuration can be found at @commitlint/config-conventional

Shared configuration

A number of shared configurations are available to install and use with commitlint:

⚠️ If you want to publish your own shareable config then make sure it has a name aligning with the pattern commitlint-config-emoji-log or commitlint-config-your-config-name β€” then in extend all you have to write is emoji-log or your-config-name.


  • Alternative, programmatic way to interact with commitlint
  • Packages:
    • format - Format commitlint reports
    • lint - Lint a string against commitlint rules
    • load - Load shared commitlint configuration
    • read - Read commit messages from a specified range or last edit
  • See API for a complete list of methods and examples



Ideas: conventional-changelog/commitlint#94

commitlint is considered stable and is used in various projects as development tool.

We identify ease of adoption and developer experience as fields where there is room and need for improvement. The items on the roadmap should enhance commitlint regarding those aspects.

Version Support

  • Node.js LTS >= 6
  • git >= 2.13.2

Related projects

  • 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
  • - helps your project to ensures nice and tidy commit messages without needing any download or installation


Copyright by @marionebl. All commitlint packages are released under the MIT license.


commitlint is developed in a mono repository.

Install and run

git clone
cd commitlint
yarn run build # run build tasks
yarn start # run tests, again on change

For more information on how to contribute please take a look at our contribution guide.

Publishing a release

yarn clean
yarn install
yarn run build
yarn test
yarn run publish
You can’t perform that action at this time.