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
- Getting started
- CLI
- Config
- Shared configuration
- API
- Tools
- Roadmap
- Version Support
- Related projects
- License
- Development
# Install commitlint cli and angular config
npm install --save-dev @commitlint/{config-conventional,cli}
# For Windows:
npm install --save-dev @commitlint/config-conventional @commitlint/cli
# Configure commitlint to use angular config
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
To lint commits before they are created you can use the 'commitmsg' hook as described here
{
"scripts": {
"commitmsg": "commitlint -e $GIT_PARAMS"
}
}
Detailed Setup instructions
- 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
commitlint.config.js
,.commitlintrc.js
,.commitlintrc.json
, or.commitlintrc.yml
file or acommitlint
field inpackage.json
- Packages: cli, core
- See Rules for a complete list of possible rules
- An example configuration can be found at @commitlint/config-conventional
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
- Alternative, programatic way to interact with
commitlint
- Packages:
- See API for a complete list of methods and examples
Ideas: marionebl/commitlint#94
commitlint
is considered stable and is used in various projects as development tool.
We indentify 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/marionebl/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
commitlint
configuration - 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/prompt
for better usability (might involve a lot of yak-shaving)
- Node.js LTS
>= 4.8
- git
>= 2
- 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 git@github.com:marionebl/commitlint.git
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.
npx yarn run clean
npx yarn install
npx yarn run build
npx yarn test
npx yarn run publish