Nonviolent Pirate Mobster

    commitlint-config-jira
    TypeScript icon, indicating that this package has built-in type declarations

    1.6.4 • Public • Published

    commitlint-config-jira

    commitlint-config-jira checks if your commit messages meet the Jira conventional commit format.

    The author of this package is looking for a job opportunity to make some 💴 for a living. If you have any offers reach me out on LinkedIn or Mail. Thanks in advance!

    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

    Run 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"
        }
      }
    }

    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

    Install

    npm i commitlint-config-jira

    DownloadsWeekly Downloads

    26,266

    Version

    1.6.4

    License

    MIT

    Unpacked Size

    14.8 kB

    Total Files

    6

    Last publish

    Collaborators

    • gherciu_gheorghe