Giter Site home page Giter Site logo

speedy-commit-msg-hook's Introduction

@speedy/commit-msg-hook

CircleCI npm version dependencies Status devDependencies Status

A highly customizable git commit message hook. Validates a commit message against a set of configuration, based on the Conventional Changelog standards.

Commit first line format:

<type>(<scope>): <subject>

Installation

npm install @speedy/commit-msg-hook --save-dev

Rules

The majority of the rules can be applied in any part of the configuration.

Name Description Type Section
no-unscoped Disallows unscoped commit messages boolean Message
skip-validation Disable validation for commit messages matching a RegExp. Useful for Merge and Revert commits) RegExp Message
valid-types An array of allowed commit message types ex: ["feat", "chore"] string[] Type
valid-scopes An array of allowed commit message scopes ex: ["router", "platform"] (Case sensitive) string[] Scope
banned-phrases An array of disallowed phrases. (Case insensitive) string[] All
max-length Requires text to be under a certain max length number All
no-dash Disallows dashes boolean All
no-space Disallows spaces boolean All
no-underscore Disallows underscores boolean All
no-camel-case Disallows camel cases boolean All
no-kebab-case Disallows kebab case boolean All
no-upper-first Enforces first character to be lower case boolean All
no-lower-first Enforces first character to be upper case boolean All
no-period-at-end Enforces last character not to be a period boolean All

Configuration

By default, will try to locate the speedy-commit-msg.json file in the root of your project folder.

If the file is not found it will fallback to an internal speedy-commit-msg.json found in config folder.

Default rules

speedy-commit-msg.json.

{
  "rules": {
    "message": {
      "skip-validation": "^(Merge)\\s",
      "max-length": 100,
      "banned-phrases": [
        "minor change",
        "minor fix",
        "minor refactor",
        "pr change",
        "pr comment",
        "following pr"
      ],
      "no-period-at-end": true,
      "no-upper-first": true
    },
    "type": {
      "valid-types": [
        "feat",
        "fix",
        "docs",
        "style",
        "refactor",
        "perf",
        "test",
        "chore",
        "revert"
      ]
    },
    "scope": {
      "no-dash": true,
      "no-underscore": true
    },
    "subject": {
      "no-period-at-end": true,
      "no-upper-first": true
    }
  }
}

extends

Configuration can be extended with one or many existing configurations.

{
  "extends": [
    "@speedy/commit-msg-hook:latest"
  ],
  "rules": {
    "message": {
      "no-unscoped": true
    },
    "scope": {
      "no-dash": false
    }
  }
}

speedy-commit-msg-hook's People

Contributors

alan-agius4 avatar renovate-bot avatar renovate[bot] avatar stephenlautier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

speedy-commit-msg-hook's Issues

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

File: renovate.json
Error type: The renovate configuration file contains some invalid settings
Message: Invalid configuration option: separateMajorReleases

Currently there is no support for git worktrees

When a git worktree is added, a .git file is created, instead of a .git folder.

Installations in a git worktree directory are currently exploding, as the file exists, however the hooks directory obviously does not.

My suggestions:

  1. Either exit gracefully if .git is a file
  2. Or support following directory inside .git file, and getting hooks from there.

Valid scopes and valid types false positives

Valid scopes and valid types are being set as valid when having partial matches examples:

Valid type should be valid only when type value is 'test' and not 'test2',

Issue is related to RegExp.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.