commitlint-config-jira

A recomended config who contain preconfigured rules for jira commits messages style

Usage no npm install needed!

<script type="module">
  import commitlintConfigJira from 'https://cdn.skypack.dev/commitlint-config-jira';
</script>

README

commitlint-config-jira

A recomended config who contain preconfigured rules for jira commits messages style. Part of commitlint-jira monorepo.

GitHub Multipack

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'],
}
To lint commits before they are created you can use Husky's 'commit-msg' hook
// package.json
{
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  }
}

Rules

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"

Customise/Override commitlint-jira-config rules

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

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Or you can sponsor via Open Collective

Open Collective

Author

@Gherciu/commitlint-jira Released under the MIT License.
Authored and maintained by GHERCIU GHEORGHE with help from contributors (list).

If you like this repository star⭐ and watch👀 on GitHub