MCPcopy
hub / github.com/conventional-changelog/commitlint

github.com/conventional-changelog/commitlint @v21.2.0 sqlite

repository ↗ · DeepWiki ↗ · release v21.2.0 ↗
338 symbols 1,364 edges 371 files 9 documented · 3%
README

Get Started | Website

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

npm latest node compatibility Github Actions

  • 🚓 Be a good commitizen
  • 📦 Share configuration via npm
  • 🤖 Tap into conventional-changelog

Contents


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; 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.

Benefits of using commitlint

Getting started

CLI

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

Config

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

Important note about Node 24+

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.json file, declaring your project as an ES6 module. This can be done easily by running npm init es6.
  • Rename the config file from commitlint.config.js to commitlint.config.mjs.

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.

Documentation

Check the main website.

API

  • 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

Tools

Roadmap

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

Ideas: conventional-changelog/commitlint#94

Version Support and Releases

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

Releases

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.

Related projects

License

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

Development

commitlint is developed in a mono repository.

Install and run

git clone git@github.com:conventional-changelog/commitlint.git
cd commitlint
pnpm install
pnpm build # run build tasks
pnpm start # rebuild on change (tsc -b --watch)
node @commitlint/cli/cli.js # run CLI

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

Extension points exported contracts — how you extend this code

IsIgnoredOptions (Interface)
(no doc)
@commitlint/types/src/is-ignored.ts
ResolveExtendsContext (Interface)
(no doc)
@commitlint/resolve-extends/src/index.ts
InputCustomCompletionOption (Interface)
(no doc)
@commitlint/prompt/src/inquirer/inquirer.d.ts
CommitMessageData (Interface)
(no doc)
@commitlint/lint/src/commit-message.ts
TestOptions (Interface)
(no doc)
@commitlint/cli/src/cli.test.ts
GraphemeSegment (Interface)
(no doc)
@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts
LoadPluginOptions (Interface)
(no doc)
@commitlint/load/src/utils/load-plugin.ts
GetCommitMessageOptions (Interface)
(no doc)
@commitlint/read/src/read.ts

Core symbols most depended-on inside this repo

parse
called by 230
@commitlint/parse/src/index.ts
subjectCase
called by 70
@commitlint/rules/src/subject-case.ts
filter
called by 59
@commitlint/cz-commitlint/src/Question.ts
resolve
called by 56
@commitlint/resolve-extends/src/index.ts
isIgnored
called by 54
@commitlint/is-ignored/src/is-ignored.ts
scopeCase
called by 52
@commitlint/rules/src/scope-case.ts
setPromptConfig
called by 47
@commitlint/cz-commitlint/src/store/prompts.ts
setRules
called by 47
@commitlint/cz-commitlint/src/store/rules.ts

Shape

Function 262
Method 29
Interface 28
Class 16
Enum 3

Languages

TypeScript100%

Modules by API surface

@commitlint/resolve-extends/src/index.ts19 symbols
@commitlint/cli/src/cli.ts16 symbols
@commitlint/cz-commitlint/src/Question.ts12 symbols
@packages/utils/pkg-check.js9 symbols
@commitlint/prompt/src/library/utils.ts9 symbols
@commitlint/prompt/src/inquirer/InputCustomPrompt.ts9 symbols
@commitlint/travis-cli/src/cli.ts8 symbols
@commitlint/cz-commitlint/src/utils/rules.ts8 symbols
@commitlint/format/src/format.ts7 symbols
@commitlint/cz-commitlint/src/SectionHeader.ts7 symbols
@commitlint/prompt/src/inquirer/inquirer.d.ts6 symbols
@commitlint/load/src/utils/plugin-errors.ts6 symbols

Dependencies from manifests, versioned

@commitlint/cliworkspace:^ · 1×
@commitlint/config-angularworkspace:^ · 1×
@commitlint/config-angular-type-enumworkspace:^ · 1×
@commitlint/config-conventionalworkspace:^ · 1×
@commitlint/config-lerna-scopesworkspace:^ · 1×
@commitlint/config-nx-scopesworkspace:^ · 1×
@commitlint/config-patternplateworkspace:^ · 1×
@commitlint/config-validatorworkspace:^ · 1×
@commitlint/config-workspace-scopesworkspace:^ · 1×
@commitlint/ensureworkspace:^ · 1×
@commitlint/execute-ruleworkspace:^ · 1×
@commitlint/formatworkspace:^ · 1×

For agents

$ claude mcp add commitlint \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact