Skip to content

πŸͺ„ An interactive conventional commits cli

License

Notifications You must be signed in to change notification settings

jimmy-guzman/gitzy

Repository files navigation

gitzyπŸͺ„

Interactive conventional commits cli, inspired by git-cz with the ability to leverage commitlint configuration, configuration validation, versatile configuration and more.

actions version downloads License semantic-release code style: prettier Code Coverage

Table of Contents

Usage

The current version of gitzy is fully supported on active LTS versions of node, and requires at least node v18.

Quick start

$ npx gitzy

Getting Started

$ npm install -g gitzy
$ gitzy
$ gitzy -p -a
$ gitzy -m "added cool new feature" -t "feat" -s "amazing"
$ gitzy -lD --no-emoji

Configuration

By default gitzy comes ready to run out of the box but provides various configuration methods and options

You can use a gitzy object in your package.json, or the following files: .gitzyrc, .gitzyrc.json, .gitzyrc.yaml, .gitzyrc.yml, .gitzyrc.js, .gitzyrc.cjs, gitzy.config.js, gitzy.config.cjs, .gitzyrc.mjs, or gitzy.config.mjs.

  • all the files can also live under a .config/ directory

Options

breakingChangeEmoji

feat: ✨ dope new feature

BREAKING CHANGE: πŸ’₯ breaks stuff
breakingChangeEmoji: "πŸ’₯"

closedIssueEmoji

fix: πŸ› resolved nasty bug

🏁 Closes: #123
closedIssueEmoji: "🏁"

issuesHint

Allows you to customize the issues prompt hint

issuesHint: #123

issuesPrefix

Allows you to choose the issuesPrefix based on Github supported keywords.

issuesPrefix: closes # must be one of close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved

disableEmoji

Disable all emojis, overrides breakingChangeEmoji, closedIssueEmoji and emoji options

disableEmoji: false

details

Allows you to further configure cli and git message output based on type. Default emojis follow standards set by gitmoji

details:
  chore:
    description: Other changes that don't modify src or test files
    emoji: "πŸ€–"
  ci:
    description: Changes to CI configuration files and scripts
    emoji: "πŸ‘·"
  docs:
    description: Add or update documentation.
    emoji: "πŸ“"
  feat:
    description: A new feature
    emoji: "✨"
  fix:
    description: Fix a bug.
    emoji: "πŸ›"
  perf:
    description: Improve performance.
    emoji: "⚑️"
  refactor:
    description: Refactor code.
    emoji: "♻️"
  release:
    description: Deploy stuff.
    emoji: "πŸš€"
  revert:
    description: Revert changes.
    emoji: "βͺ"
  style:
    description: Improve structure / format of the code.
    emoji: "🎨"
  test:
    description: Add or update tests.
    emoji: "βœ…"

headerMaxLength

headerMaxLength: 64

headerMinLength

headerMinLength: 3

questions

Allows you to toggle questions.

questions:
  - type # Choose the type
  - scope # Choose the scope
  - subject # Add a short description
  - body # Add a longer description
  - breaking # Add a short description
  - issues # Add issues this commit closes, e.g #123

scope question will not be turned if there's no scopes

scopes

Allows you to provide list of scopes to choose from.

scopes: []

Will enable scope question if scopes are provided.

types

Allows you to provide list of types to choose from. Can be further configured through Details.

types:
  - chore
  - docs
  - feat
  - fix
  - refactor
  - test
  - style
  - ci
  - perf
  - revert
  - release

useCommitlintConfig

Will leverage Commitlint's configuration instead for these options:

useCommitlintConfig: false

Flags

flag alias description
--breaking -b skip "breaking" question and provide your own "breaking" message
--body -d skip "body" question and provide your own "body" message
--help -h display help for command
--issues -i skip "issues" question and provide your own "issue" message
--subject -m skip "subject" question and provide your own "subject" message
--passthrough -p subsequent command line args passed through to git
--scope -s skip "scope" question and provide your own "scope" message
--type -t skip "type" question and provide your own "type" message
--dry-run -D output the git message but do not commit
--version -v output the version number
--commitlint -l leverage commitlint's configuration
--skip -S skip questions
--no-emoji disable all emojis
--retry -r retries previous commit, skips all prompts