jira-prepare-commit-msg

Husky Git hook to add JIRA ticket ID into the commit message

Usage no npm install needed!

<script type="module">
  import jiraPrepareCommitMsg from 'https://cdn.skypack.dev/jira-prepare-commit-msg';
</script>

README

jira-prepare-commit-msg

Downloads MIT license

The husky command to add JIRA ticket ID into the commit message if it is missed.

The JIRA ticket ID is taken from a git branch name.

Installation

Install the package using NPM

npm install husky jira-prepare-commit-msg --save-dev

For Husky 5:

Execute command

husky add .husky/prepare-commit-msg 'npx jira-prepare-commit-msg $1'

For Husky 2-4:

Inside your package.json add a standard husky npm script for the git hook

{
  "husky": {
    "hooks": {
      "prepare-commit-msg": "jira-prepare-commit-msg"
    }
  }
}

Configuration

Starting with v1.3 you can now use different ways of configuring it:

  • jira-prepare-commit-msg object in your package.json
  • .jirapreparecommitmsgrc file in JSON or YML format
  • jira-prepare-commit-msg.config.js file in JS format

See cosmiconfig for more details on what formats are supported.

package.json example:

{
  "jira-prepare-commit-msg": {
    "messagePattern": "[$J]\n$M",
    "jiraTicketPattern": "([A-Z]+-\\d+)",
    "commentChar": "#",
    "isConventionalCommit": false,
    "allowEmptyCommitMessage": false
  }
}

Supported message pattern

jira-prepare-commit-msg supports special message pattern to configure where JIRA ticket number will be inserted.

  • Symbols $J will be replaced on JIRA ticket number
  • Symbols $M will be replaced on commit message.

Pattern [$J]\n$M is currently supported by default.

{
  "jira-prepare-commit-msg": {
    "messagePattern": "[$J]\n$M"
  }
}
Examples
  • [$J] $M
  • [$J]-$M
  • $J $M

NOTE: the supplied commit message will be cleaned up by strip mode.

Supported JIRA ticket pattern

jira-prepare-commit-msg allows using custom regexp string pattern to search JIRA ticket number.

Pattern ([A-Z]+-\\d+) is currently supported by default.

NOTE: to search JIRA ticket pattern flag i is used: new RegExp(pattern, i')

{
  "jira-prepare-commit-msg": {
    "jiraTicketPattern": "([A-Z]+-\\d+)"
  }
}

Git comment char

Git uses # by default to comment lines in the commit message. If default char was changed jira-prepare-commit-msg can allow set it.

{
  "jira-prepare-commit-msg": {
    "commentChar": "#"
  }
}

Allow empty commit message

The commit message might be empty after cleanup or using -m "", jira-prepare-commit-msg might insert the JIRA ticket number anyway if this flag is set.

{
  "jira-prepare-commit-msg": {
    "allowEmptyCommitMessage": true
  }
}

Conventional commit

jira-prepare-commit-msg supports conventional commit. To insert JIRA ticket number to the description set the following setting:

{
  "jira-prepare-commit-msg": {
    "isConventionalCommit": true
  }
}

NOTE: For description will be applied messagePattern

Examples

If the configuration is:

{
  "jira-prepare-commit-msg": {
    "messagePattern": "[$J] $M",
    "isConventionalCommit": true
  }
}

and commit message is fix(test)!: important changes then at result will be fix(test)!: [JIRA-1234] important changes

TODO

  • Support user patterns
  • Support configuration (package.json)
  • Lint
  • Tests
    • Test for configuration
  • Don't clear commit message

License

MIT