commit-prompt

2.2.3 • Public • Published

commit-prompt

A fork of git-cz.

  1. Allows scope as free text
  2. Adds JIRA task ID question. It tries to get the ticket id from git branch first (if you use git flow, your branch should be feature/#id), if not found, asks user to input, and wrap it in [#id] format, as required by JIRA Gitlab integration.

Base principles refrences:

Without installation

npx commit-prompt

Install globally standalone

npm install -g commit-prompt
commit-prompt

Install locally with Commitizen

npm install -g commitizen
npm install --save-dev commit-prompt

package.json:

{
  "config": {
    "commitizen": {
      "path": "commit-prompt"
    }
  },
}

run:

git cz

Install globally with Commitizen

npm install -g commitizen commit-prompt
commitizen init commit-prompt --save-dev --save-exact

run:

git cz

Custom config

You can provide custom configuration in commit-prompt.congfig.js (or .commitpromptrc, .commit-prompt.js, .commit-prompt.json) file in your repo. Below is default config:

module.exports = {
  "list": [
    "test",
    "feat",
    "fix",
    "chore",
    "docs",
    "refactor",
    "style",
    "ci",
    "perf"
  ],
  "maxMessageLength": 64,
  "minMessageLength": 3,
  "questions": [
    "type",
    "scope",
    "trackerId",
    "subject",
    "breaking",
    "body"
  ],
  "types": {
    "chore": {
      "description": "Build process or auxiliary tool changes",
      "emoji": "🤖",
      "value": "chore"
    },
    "ci": {
      "description": "CI related changes",
      "emoji": "🎡",
      "value": "ci"
    },
    "docs": {
      "description": "Documentation only changes",
      "emoji": "✏️",
      "value": "docs"
    },
    "feat": {
      "description": "A new feature",
      "emoji": "🎸",
      "value": "feat"
    },
    "fix": {
      "description": "A bug fix",
      "emoji": "🐛",
      "value": "fix"
    },
    "perf": {
      "description": "A code change that improves performance",
      "emoji": "⚡️",
      "value": "perf"
    },
    "refactor": {
      "description": "A code change that neither fixes a bug or adds a feature",
      "emoji": "💡",
      "value": "refactor"
    },
    "release": {
      "description": "Create a release commit",
      "emoji": "🏹",
      "value": "release"
    },
    "style": {
      "description": "Markup, white-space, formatting, missing semi-colons...",
      "emoji": "💄",
      "value": "style"
    },
    "test": {
      "description": "Adding missing tests",
      "emoji": "💍",
      "value": "test"
    }
  }
};

Commit Message Format

  • A commit message consists of a header, body and footer.
  • The header has a type and a subject:
<type>[(<scope>)]: <emoji> <trackerId> <subject>
[BLANK LINE]
[body]
[BLANK LINE]
[breaking changes]
[BLANK LINE]
[footer]

The header is the only mandatory part of the commit message.

The first line (type + trackerId + subject) is limited to 50 characters [enforced]

Any other line should be limited to 72 character [automatic wrapping]

This allows the message to be easier to read on GitHub as well as in various git tools.

Type

Must be one of the following:

  • test — Adding missing tests
  • feat — A new feature
  • fix — A bug fix
  • chore — Build process or auxiliary tool changes
  • docs — Documentation only changes
  • refactor — A code change that neither fixes a bug or adds a feature
  • style — Markup, white-space, formatting, missing semi-colons...
  • ci — CI related changes
  • perf — A code change that improves performance

Subject

The subject contains succinct description of the change:

  • Use the imperative, present tense: "change" not "changed" nor "changes"
  • No dot (.) at the end.

Body

Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior.

Affects [only on lerna environments]

Select the packages the commit affected.

Breaking Changes

Breaking Changes must start with the words BREAKING CHANGE: .

Footer

The footer is the place to reference any tasks related to this commit.

Why this Fork?

npm i -g commit-prompt
added 1 package in 0.612s

Installs in 0.6s vs 31.1s.

npm i -g mol-conventional-changelog
added 345 packages in 31.076s

Readme

Keywords

none

Package Sidebar

Install

npm i commit-prompt

Weekly Downloads

43

Version

2.2.3

License

Unlicense

Unpacked Size

3.15 MB

Total Files

7

Last publish

Collaborators

  • seniakalma
  • elizaveta.weiss
  • cristian.ciorobea
  • or-hai.levy