commitlint-jira
commitlint-jira checks if your commit messages meet the Jira conventional commit format.
For Tips and Advanced Usage you can read this Blog Post
Getting started.
Install dependencies
npm install --save-dev @commitlint/cli commitlint-plugin-jira-rules commitlint-config-jira
- commitlint-config-jira - is a recomended config who contain preconfigured rules for jira commits messages style. See all rules in description below
- commitlint-plugin-jira-rules - is a plugin that implement all jira commits messages style rules and validate commit messages
Configure commitlint to use jira commits messages style config
// commitlint.config.js
module.exports = {
plugins: ['commitlint-plugin-jira-rules'],
extends: ['jira'],
}
husky's 'commit-msg' hook
To lint commits before they are created you can useRun the following in your terminal to create the proper hook.
npx husky add .husky/commit-msg 'commitlint --edit $1'
For version 4 and under of Husky use the following syntax instead in your package.json
.
// package.json
{
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}
pre-commit as an alternative to husky
You can useYou need to have the pre-commit
package manager installed. Follow the installation guideline.
-
Add the following to your
.pre-commit-config.yaml
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook rev: <latest tag> hooks: - id: commitlint stages: [commit-msg] additional_dependencies: ['commitlint-plugin-jira-rules', 'commitlint-config-jira']
-
Install the commit-msg hook in your project repo
pre-commit install --hook-type commit-msg
Rules
jira-task-id-empty
- this rule check if commit message task id is not empty.
// If your task do not have an id use a conventional task id e.g: IB-0000
// ❌ Bad commit messages
git commit -m"My commit message body"
git commit -m":My commit message body"
// ✅ Good commit messages
git commit -m"IB-2121, IB-21: My commit message body"
git commit -m"IB-0000: My commit message body"
jira-task-id-max-length
- this rule check if jira task id length is loonger that the provided value.
// Preconfigured and recommended value in commitlint-config-jira is 9 chars
// ❌ Bad commit messages
git commit -m"IB-2121212121212121: My commit message body"
// ✅ Good commit messages
git commit -m"IB-2121: My commit message body"
git commit -m"IB-21: My commit message body"
jira-task-id-min-length
- this rule check if jira task id length is shorter that the provided value.
// Preconfigured and recommended value in commitlint-config-jira is 3 chars
// ❌ Bad commit messages
git commit -m"I1: My commit message body"
// ✅ Good commit messages
git commit -m"IB-2121: My commit message body"
git commit -m"IB-21: My commit message body"
jira-task-id-case
- this rule check if taskId is in provided case.
// Preconfigured and recommended value in commitlint-config-jira is "uppercase"
// ❌ Bad commit messages
git commit -m"ib-21: My commit message body"
// ✅ Good commit messages
git commit -m"IB-2121, IB-21: My commit message body"
git commit -m"IB-21: My commit message body"
jira-task-id-separator
- this rule check if taskId header and footer is separated with provided value.
// Preconfigured and recommended value in commitlint-config-jira is "-"
// ❌ Bad commit messages
git commit -m"IB/21: My commit message body"
git commit -m"IB_21 :My commit message body"
// ✅ Good commit messages
git commit -m"IB-2121, IB-21: My commit message body"
git commit -m"IB-21: My commit message body"
jira-task-id-project-key
- this rule check if commit message task id starts with specific project key.
// Accept a string or an array of strings, by default is disabled
// For example ["PRJ1", "PRJ2"]
// ❌ Bad commit messages
git commit -m"IB-21: My commit message body"
// ✅ Good commit messages
git commit -m"PRJ1-21, PRJ1-22: My commit message body"
git commit -m"PRJ2-21: My commit message body"
jira-commit-status-case
- this rule check if commit status is in provided case.
// Preconfigured and recomended value in commitlint-config-jira is "uppercase"
// ❌ Bad commit messages
git commit -m"[wip]IB-21: My commit message body"
// ✅ Good commit messages
git commit -m"[WIP]IB-21: My commit message body"
jira-commit-message-separator
- this rule check if commit message separator match provided separator.
// Preconfigured and recomended value in commitlint-config-jira is ":"
// ❌ Bad commit messages
git commit -m"IB-21/ My commit message body"
git commit -m"IB-21 - My commit message body"
git commit -m"IB-21% My commit message body"
// ✅ Good commit messages
git commit -m"IB-21: My commit message body"
commitlint-jira-config
rules
Customise/Override For Tips and Advanced Usage you can read this Blog Post
// commitlint.config.js
module.exports = {
plugins: ['commitlint-plugin-jira-rules'],
extends: ['jira'],
rules: {
// to Customise/Override a rule
+ 'jira-task-id-max-length': [2, 'always', 10]
// to turn off a rule
+ 'jira-task-id-max-length': [0]
},
}
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Open Collective
Or you can sponsor viaAuthor
@Gherciu/commitlint-jira Released under the MIT License.
Authored and maintained by GHERCIU GHEORGHE with help from contributors (list).