Socket
Socket
Sign inDemoInstall

fit-commit-js

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fit-commit-js

A npm package to validate commits according to community guidelines


Version published
Maintainers
1
Created
Source

Build Status Dependency Status Code Climate

Fit commit js

A node version of fit-commit by Mike Foley

It creates a git commit hook that will be run each time you do a commit for your repo, it will validate that the commit message follows the guidelines you've set up for your project.

Table of contents

Why to validate commits and reasons behind each rule

We all want always to become better developers, in order to do so, we need to learn new things every day. One of the strategies to learning and using new ways to work, is to understand the reasons behind them.

In order to get more insights behind why it is important to validate commit messages, and the whys behind each of the rules in this package, check out the wiki in github

Installation and Configuration

To install it run:

$ npm i fit-commit-js

Then you need to install the commit hook in your repo by doing:

$./node_modules/fit-commit-js/bin/fit-commit-js.js install

Then create your fitcomitjsrc.{yml, yaml, json} with your settings, and place it at the root of your project.

You can also add a section in your package.json called: "fitcommitjsConfig", and add there your settings.

Available Validators

  • Line length Validates that the line length of the subject and content of the commit message is less or equal than the number you configure for it.

Default value: 150

  • Empty lines Validates that the lines you specify are empty.

Default value: 1 (the line after the subject)

  • Tags Validates that your commit message contains within its content a tag categorizing the type of commit.

Default Value: '' ie: feature, chore, bugfix, etc.

  • Ticket code Validates that the commit message contains a ticket number

Default Value: ''

  • Tense of the subject Validates that tense of the subject is an imperative verb. It checks that the first word of the subject is not within the black list of verbs listed below.

Default Value: N/A Checks against black list of words

  • WIP (Work in progress) Ensures that work in progress is not merged into specified branch. It ensures that the commit message does not have the next words within its content:
    'wip', 'rw', 'todo'

Default Value: N/A

  • Capitalized subject Ensures that the subject is a capitalized sentence.

Default Value: N/A

  • Subject with a period Ensures that the subject ends with period

Default Value: N/A

Sample of configs

Yaml

---
validators:
  lineLength:
    enabled: true
    maxLineLength: 72
    subjectMaxLength: 50
  ticketCode:
    enabled: true
    ticketCodeText: 'FITCOMMITJS-'
    oneTicketPerCommit: false
  emptyLines:
    enabled: true
    emptyLines: 1,3
  tags:
    enabled: true
    tags: bugfix, chore, feature
    lineOfTheTag: 4
  subjectTense:
    enabled: true
  subjectPeriod:
    enabled: true
  capitalizedSubject:
    enabled: true
  wip:
    enabled: true
    branch: master

Json

...
  "fitcommitjsConfig" : {
    "validators" : {
      "lineLength" : {
        "enabled" : true,
        "maxLineLength" : 72,
        "subjectMaxLength" : 50
      },
      "ticketCode" : {
        "enabled" : true,
        "ticketCodeText" : "FITCOMMITJS-",
        "oneTicketPerCommit" : false
      },
      "emptyLines" : {
        "enabled" : true,
        "emptyLines" : 13
      },
      "tags" : {
        "enabled" : true,
        "tags" : "bugfix, chore, feature",
        "lineOfTheTag" : 4
      },
      "subjectTense" : {
        "enabled" : true
      },
      "subjectPeriod" : {
        "enabled" : true
      },
      "capitalizedSubject" : {
        "enabled" : true
      },
      "wip" : {
        "enabled" : true,
        "branch" : "master"
      }
    }
  }
...

Black list of words for the subject

'adds', 'adding', 'added', 'allows', 'allowing', 'allowed', 'amends', 'amending', 'amended', 'bumps', 'bumping', 'bumped', 'calculates', 'calculating', 'calculated', 'changes', 'changing', 'changed', 'cleans', 'cleaning', 'cleaned', 'commits', 'committing', 'committed', 'corrects', 'correcting', 'corrected', 'creates', 'creating', 'created', 'darkens', 'darkening', 'darkened', 'disables', 'disabling', 'disabled', 'displays', 'displaying', 'displayed', 'drys', 'drying', 'dryed', 'ends', 'ending', 'ended', 'enforces', 'enforcing', 'enforced', 'enqueues', 'enqueuing', 'enqueued', 'extracts', 'extracting', 'extracted', 'finishes', 'finishing', 'finished', 'fixes', 'fixing', 'fixed', 'formats', 'formatting', 'formatted', 'guards', 'guarding', 'guarded', 'handles', 'handling', 'handled', 'hides', 'hiding', 'hid', 'increases', 'increasing', 'increased', 'ignores', 'ignoring', 'ignored', 'implements', 'implementing', 'implemented', 'improves', 'improving', 'improved', 'keeps', 'keeping', 'kept', 'kills', 'killing', 'killed', 'makes', 'making', 'made', 'merges', 'merging', 'merged', 'moves', 'moving', 'moved', 'permits', 'permitting', 'permitted', 'prevents', 'preventing', 'prevented', 'pushes', 'pushing', 'pushed', 'rebases', 'rebasing', 'rebased', 'refactors', 'refactoring', 'refactored', 'removes', 'removing', 'removed', 'renames', 'renaming', 'renamed', 'reorders', 'reordering', 'reordered', 'requires', 'requiring', 'required', 'restores', 'restoring', 'restored', 'sends', 'sending', 'sent', 'sets', 'setting', 'separates', 'separating', 'separated', 'shows', 'showing', 'showed', 'skips', 'skipping', 'skipped', 'sorts', 'sorting', 'speeds', 'speeding', 'sped', 'starts', 'starting', 'started', 'supports', 'supporting', 'supported', 'takes', 'taking', 'took', 'tests', 'testing', 'tested', 'truncates', 'truncating', 'truncated', 'updates', 'updating', 'updated', 'uses', 'using', 'used'

Guidelines to contribute

  • Use the ES2015 features supported by node
  • TDD with mocha, chai and sinon
  • Functional programming with ramda
  • Use javascript guidelines from Airbnb
  • Allow spaces inside "(),{} and []"

Supported config files

  • .fitcommitjsrc.json
  • .fitcommitjsrc.{yml,yaml}
  • .package.json with a key: fitcommitjsConfig

Keywords

FAQs

Package last updated on 06 Mar 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc