@commitlint/test v9.0.1
Get Started | Let's chat
| 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
- š Be a good
commitizen - š¦ Share configuration via
npm - š¤ Tap into
conventional-changelog
Contents
- What is commitlint
- Getting started
- CLI
- Config
- Shared configuration
- API
- Tools
- Roadmap
- Version Support
- Related projects
- License
- Development
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 optionalReal world examples can look like this:
chore: run tests on travis cifix(server): send cors headersfeat(blog): add comment sectionCommon 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.jsTo 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
- Local setup - Lint messages on commit with husky
- CI setup - Lint messages during CI builds
CLI
- Primary way to interact with commitlint.
npm install --save-dev @commitlint/cli- Packages: cli
Config
- Configuration is picked up from
commitlint.config.js,.commitlintrc.js,.commitlintrc.json, or.commitlintrc.ymlfile or acommitlintfield inpackage.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:
- @commitlint/config-angular
- @commitlint/config-conventional
- @commitlint/config-lerna-scopes
- @commitlint/config-patternplate
- conventional-changelog-lint-config-atom
- conventional-changelog-lint-config-canonical
- commitlint-config-jira
ā ļø If you want to publish your own shareable config then make sure it has a name aligning with the pattern
commitlint-config-emoji-logorcommitlint-config-your-config-nameā then in extend all you have to write isemoji-logoryour-config-name.
API
- Alternative, programmatic way to interact with
commitlint - Packages:
- See API for a complete list of methods and examples
Tools
Roadmap
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.
- Adoption: Provide reusable Travis CI integration:
@commitlint/travis-cli(https://github.com/conventional-changelog/commitlint/releases/tag/v5.1.0) - DX: Support PR squash scenario via ahmed-taj/commitlint-bot and
@commitlint/travis-cli - Adoption: Make ahmed-taj/commitlint-bot configurable via
commitlintconfiguration - Adoption: Create
commitlint init - DX: Extend the configuration schema to allow for additional fields (descriptions, examples, fixes) on both the rule and value level
- DX: Incorporate an extended version of lennym/commit-template deducing a template from commitlint configuration
- DX: Rewrite
@commitlint/promptfor better usability (might involve a lot of yak-shaving)
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
- commitlint.io - helps your project to ensures nice and tidy commit messages without needing any download or installation
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
yarn
yarn run build # run build tasks
yarn start # run tests, again on changeFor 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