đź““ Lint commit messages
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
commitizen
npm
conventional-changelog
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:
These can be modified by your own configuration.
# Install commitlint cli and conventional config npm install --save-dev @commitlint/{config-conventional,cli} # For Windows: npm install --save-dev @commitlint/config-conventional @commitlint/cliConfigure 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-msghook:
# Install Husky v5 npm install husky --save-dev # or yarn add husky --devActive hooks
npx husky install
or
yarn husky install
Add hook
npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"
or
yarn husky add .husky/commit-msg "yarn commitlint --edit $1"
If the file
.husky/commit-msgalready exists, you can edit the file and put this:
# .husky/commit-msg # ... npx --no-install commitlint --edit $1 # or yarn commitlint --edit $1
Detailed Setup instructions
npm install --save-dev @commitlint/cli
commitlint.config.js,
.commitlintrc.js,
.commitlintrc.json, or
.commitlintrc.ymlfile or a
commitlintfield in
package.json
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-logorcommitlint-config-your-config-name— then in extend all you have to write isemoji-logoryour-config-name.
commitlint
commitlintis 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
commitlintregarding those aspects.
@commitlint/travis-cli(https://github.com/conventional-changelog/commitlint/releases/tag/v5.1.0)
@commitlint/travis-cli
commitlintconfiguration
commitlint init
@commitlint/promptfor better usability (might involve a lot of yak-shaving)
>= 10.21.0
>= 2.13.2
Copyright by @marionebl. All
commitlintpackages are released under the MIT license.
commitlintis developed in a mono repository.
git clone [email protected]:conventional-changelog/commitlint.git cd commitlint yarn yarn run build # run build tasks yarn start # run tests, again on change
For more information on how to contribute please take a look at our contribution guide.
Before publishing a release do a
yarn run publish --dry-runto get the upcoming version and update the version in the
should print helptest.
--dry-run.
npm login
yarn clean yarn install yarn run build yarn test yarn run publish --otp
nextrelease
npm login
yarn clean yarn install yarn run build yarn test npx lerna publish --conventional-commits --dist-tag next --otp
nextto
latest
npm login
Move next to latest:
npx lerna exec --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 '
Remove next:
npx lerna exec --no-bail --no-private --no-sort --stream -- '[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag rm ${LERNA_PACKAGE_NAME} next --otp '