- Notifications
You must be signed in to change notification settings - Fork948
conventional-changelog/commitlint
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Lint commit messages
Demo generated withsvg-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
- What is commitlint
- Getting started
- CLI
- Config
- Shared configuration
- API
- Tools
- Version Support and Releases
- Related projects
- License
- Development
commitlint checks if your commit messages meet theconventional 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 cifix(server): send cors headersfeat(blog): add comment sectionCommon types according tocommitlint-config-conventional (based on the Angular convention) can be:
- build
- chore
- ci
- docs
- feat
- fix
- perf
- refactor
- revert
- style
- test
These can be modified byyour own configuration.
# Install commitlint cli and conventional confignpm install --save-dev @commitlint/{config-conventional,cli}# For Windows:npm install --save-dev @commitlint/config-conventional @commitlint/cli# Configure commitlint to use conventional configecho"module.exports = {extends: ['@commitlint/config-conventional']}"> commitlint.config.js
To lint commits before they are created you can use Husky'scommit-msg hook:
# Install Husky v6npm install husky --save-dev# oryarn add husky --dev# Activate hooksnpx husky install# oryarn husky install
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit ${1}'Check thehusky documentation on how you can automatically have Git hooks enabled after install for differentyarn versions.
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:
.commitlintrc.commitlintrc.json.commitlintrc.yaml.commitlintrc.yml.commitlintrc.js.commitlintrc.cjs.commitlintrc.ts.commitlintrc.ctscommitlint.config.jscommitlint.config.cjscommitlint.config.tscommitlint.config.ctscommitlintfield inpackage.json
- Packages:cli,core
- SeeRules 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 withcommitlint:
- @commitlint/config-angular
- @commitlint/config-conventional
- @commitlint/config-lerna-scopes
- @commitlint/config-nx-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 patterncommitlint-config-emoji-logorcommitlint-config-your-config-name— then in extend all you have to write isemoji-logoryour-config-name.
Check themain website.
- Alternative, programmatic way to interact with
commitlint - Packages:
- SeeAPI for a complete list of methods and examples
commitlint is considered stable and is used in various projects as development tool.
We identifyease of adoption anddeveloper experience as fields where thereis room and need for improvement. The items on the roadmap should enhancecommitlint 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 viaahmed-taj/commitlint-bot and
@commitlint/travis-cli - Adoption: Makeahmed-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 oflennym/commit-template deducing a template from commitlint configuration
- DX: Rewrite
@commitlint/promptfor better usability (might involve a lot of yak-shaving)
- Node.jsLTS
>= 14 - git
>= 2.13.2
Security patches will be applied to versions which are not yet EOL.
Features will only be applied to the current main version.
| Release | Inital release | End-of-life |
|---|---|---|
| v17 | 16.05.2022 | 16.05.2023 |
| v16 | 26.12.2021 | 26.12.2022 |
| v15 | 17.11.2021 | 17.11.2022 |
| v14 | 26.10.2021 | 26.10.2022 |
| v13 | 24.05.2021 | 24.05.2022 |
| v12 | 23.02.2021 | 23.02.2022 |
| v11 | 13.09.2020 | 13.09.2020 |
Dates are subject to change.
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.
- 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. Allcommitlint packages are released under the MIT license.
commitlint is developed in a mono repository.
git clone git@github.com:conventional-changelog/commitlint.gitcd commitlintyarnyarn run build# run build tasksyarn start# run tests, again on change
For more information on how to contribute please take a look at ourcontribution guide.
(Partly outdated)
npm loginnvm use (if you have nvm installed)
yarn cleanyarn installyarn buildyarntestyarn run publish --otp<one-time password>
If something in between fails (like a new packages was added and needs to be published for thefirst time but you forgot) you can uselerna publish from-package to publish anythign thathas not been published yet.
- Copy changelog entry for the new version
- Create release for the new tag:https://github.com/conventional-changelog/commitlint/releases
- Post in thecommitlint Slack-channel
npm loginnvm use (if you have nvm installed)
yarn cleanyarn installyarn buildyarntestnpx lerna publish --conventional-commits --dist-tag [`next`|`[PATCH_RELEASE_VERSION]`] --otp<one-time password>
If for some reason this stops in between, you can manually publish missing packages like this:
npm publish<package-name> --tag [`next`|`[PATCH_RELEASE_VERSION]`] --otp<one-time password>
npm publish [PACKAGE_NAME] --access public
From within the folder first i.e.cd @commitlint/new-packages.
npm login
npx lernaexec --no-bail --no-private --no-sort --stream --'[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag add ${LERNA_PACKAGE_NAME}@$(npm v . dist-tags.next) latest --otp <one-time password>'
Remove next:
npx lernaexec --no-bail --no-private --no-sort --stream --'[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag rm ${LERNA_PACKAGE_NAME} next --otp <one-time password>'
About
📓 Lint commit messages
Topics
Resources
License
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
