Skip to content
πŸ““ Lint commit messages
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci chore: use yarn update task Nov 30, 2018
.github fix: replace all repository references with conventional changelog (#561 Jan 31, 2019
@alias v7.5.2 Feb 11, 2019
@commitlint feat(resolve-extends): accept short scoped package names in extends (#… Mar 21, 2019
@packages chore: update dependency tar-fs to v2 Mar 10, 2019
docs feat(resolve-extends): accept short scoped package names in extends (#… Mar 21, 2019
.editorconfig feat(travis-cli): add reusable travis command line interface Nov 24, 2017
.gitignore feat(wildcards): add new wildcard patterns #315 Aug 20, 2018
.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 v7.5.2 Feb 11, 2019 chore: move win32 build to travis Jan 31, 2019
lerna.json docs: extend copyright notice to present Sep 4, 2018
yarn.lock chore: unblock ci by forcing js-yaml to >=3.13.0 #599 Mar 24, 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

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
npx yarn install
npx yarn run build # run build tasks
npx 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

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