1.0.4 • Published 3 years ago

@pobidowski/cz-conventional-changelog-for-phabricator v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

cz-conventional-changelog-for-phabricator

Part of the commitizen family. Prompts for conventional changelog standard and also prompts for a mandatory Phabricator issue.

npm version npm downloads

Features

  • Works seamlessly with semantic-release 🚀
  • Works seamlessly with Phabricator smart commits
  • Automatically detects the Phabricator issue from the branch name

Quickstart

Installation

npm install commitizen @pobidowski/cz-conventional-changelog-for-phabricator

and then add the following to package.json:

{
  "scripts": {
    "commit": "git-cz"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/@pobidowski/cz-conventional-changelog-for-phabricator"
    }
  }
}

Configuration

Like commitizen, you can specify the configuration of cz-conventional-changelog-for-phabricator through the package.json's config.commitizen key, or with environment variables.

Environment variablepackage.jsonDefaultDescription
CZ_PHABRICATOR_MODEphabricatorModetrueIf this is set to true, CZ will ask for a Phabricator issue and put it in the commit head. If set to false CZ will ask for the issue in the end, and can be used for GitHub.
CZ_MAX_HEADER_WIDTHmaxHeaderWidth72This limits how long a commit message head can be.
CZ_MIN_HEADER_WIDTHminHeaderWidth2This limits how short a commit message can be.
CZ_MAX_LINE_WIDTHmaxLineWidth100Commit message bodies are automatically wrapped. This decides how long the lines will be.
CZ_SKIP_SCOPEskipScopetrueIf scope should be used in commit messages.
CZ_TYPEdefaultTypeundefinedThe default type.
CZ_SCOPEdefaultScopeundefinedThe default scope.
CZ_SUBJECTdefaultSubjectundefinedA default subject.
CZ_BODYdefaultBodyundefinedA default body.
CZ_ISSUESdefaultIssuesundefinedA default issue.

Dynamic Configuration

Alternatively, if you want to create your own profile, you can use the configurable approach.
Here is an example:
./index.js

const custom = require('@pobidowski/cz-conventional-changelog-for-phabricator/configurable');
// You can do this optionally if you want to extend the commit types
const defaultTypes = require('@pobidowski/cz-conventional-changelog-for-phabricator/types');

module.exports = custom({
  types: {
    ...defaultTypes,
    perf: {
      description: 'Improvements that will make your code perform better',
      title: 'Performance'
    }
  },
  skipScope: false,
  scopes: [
    {
      "value": "test",
      "name": "Test"
    }
  ]
});

./package.json

{
  "config": {
    "commitizen": {
      "path": "./index.js"
    }
  }
}

This example would:

  • Display "perf" as an extra commit type
  • Ask you to add a commit scope
  • Limit the scope selection to either myScope or myScope2

List of all supported configurable options when using the configurable approach:
| Key | Default | Description | | ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | phabricatorMode | true | If this is set to true, CZ will ask for a Phabricator issue and put it in the commit head. If set to false CZ will ask for the issue in the end, and can be used for GitHub. | | maxHeaderWidth | 72 | This limits how long a commit message head can be. | | minHeaderWidth | 2 | This limits how short a commit message can be. | | maxLineWidth | 100 | Commit message bodies are automatically wrapped. This decides how long the lines will be. | | skipScope | true | If scope should be used in commit messages. | | defaultType | undefined | The default type. | | defaultScope | undefined | The default scope. | | defaultSubject | undefined | A default subject. | | defaultBody | undefined | A default body. | | defaultIssues | undefined | A default issue. | | phabricatorPrefix | 'T' | The default Phabricator ticket prefix that will be displayed. | | types | ./types.js| A list (JS Object) of supported commit types. | | scopes | undefined | A list (JS Array) of scopes that will be available for selection. Note that adding this will change the scope field from Inquirer 'input' to 'list'. |

Commitlint

If using the commitlint js library, the "maxHeaderWidth" configuration property will default to the configuration of the "header-max-length" rule instead of the hard coded value of 72. This can be ovewritten by setting the 'maxHeaderWidth' configuration in package.json or the CZ_MAX_HEADER_WIDTH environment variable.