conventional-changelog / commitlint
- среда, 2 ноября 2022 г. в 00:36:40
📓 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
commitizennpmconventional-changelogcommitlint 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/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:
# Install Husky v6
npm install husky --save-dev
# or
yarn add husky --dev
# Activate hooks
npx husky install
# or
yarn husky installnpx husky add .husky/commit-msg 'npx --no -- commitlint --edit ${1}'
Check the husky documentation on how you can automatically have Git hooks enabled after install for different yarn versions.
Detailed Setup instructions
npm install --save-dev @commitlint/cli.commitlintrc.commitlintrc.json.commitlintrc.yaml.commitlintrc.yml.commitlintrc.js.commitlintrc.cjs.commitlintrc.tscommitlint.config.jscommitlint.config.cjscommitlint.config.tscommitlint field in package.jsonA 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 patterncommitlint-config-emoji-logorcommitlint-config-your-config-name— then in extend all you have to write isemoji-logoryour-config-name.
commitlintcommitlint 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.
@commitlint/travis-cli (https://github.com/conventional-changelog/commitlint/releases/tag/v5.1.0)@commitlint/travis-clicommitlint configurationcommitlint init@commitlint/prompt for better usability (might involve a lot of yak-shaving)>= 14>= 2.13.2Security 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.
Copyright by @marionebl. All commitlint packages are released under the MIT license.
commitlint is developed in a mono repository.
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.
(Partly outdated)
npm login
nvm use (if you have nvm installed)yarn clean
yarn install
yarn build
yarn test
yarn run publish --otp <one-time password>next release (or i.e. patch release)npm login
nvm use (if you have nvm installed)yarn clean
yarn install
yarn build
yarn test
npx 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 publicFor alias packages you need to add @alias/. Like we already do with @commitlint/ anyways. This is just a reminder to make sure we do not forget this.
next to latestnpm loginnpx 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 <one-time password>'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 <one-time password>'