1.0.0 • Published 5 years ago
seven-rule-msg v1.0.0
seven-rule-msg
Minimal, opinionated commit message validator.
Rules
All rules are inspired from Chris' post and its predecessors.
- Separate subject from body with a blank line
- Limit the subject line to 50 characters
- Capitalize the subject line
- Do not end the subject line with a period
- Use the imperative mood in the subject line (not checked)
- Wrap the body at 72 characters
- Use the body to explain what and why vs. how (not checked)
Features
- No configuration required
- Beautiful output
- Read from
$1
- Read from file
- Read from
STDIN
- Verbose mode
- Silent mode
Installation
Assuming you have npm
installed,
npm install --global seven-rule-msg-cli
Usage
From CLI
See also: usage.txt
.
CLI Argument
seven-rule-msg 'Fix all the stuff'
File
seven-rule-msg [--file|-f] <path-to-file>
STDIN
echo 'Fix all the stuff' | seven-rule-msg
As git hook
.git/hooks/commit-msg
:
!/bin/sh
seven-rule-msg -f "$1"
Using the node.js API
import validate from 'seven-rule-msg';
const results = validate('A nice lil commit message');
validate(commitMessage: string)
- Return value:
Result[]
- Length:
7
- Length:
The i
th element of the returned array corresponds to the i + 1
th rule.
interface Result {
readonly rule: Rule,
readonly type: ResultType
}
interface Rule {
readonly message: string,
readonly test?: (commitMessage: string) => boolean;
}
Rule
s without test
methods are informative only. In other words, they cannot be reliably checked programmatically.
enum ResultType {
pass = 'pass',
fail = 'fail',
info = 'info'
}
Badge
Here's a badge to show the world that you follow the seven rules of commit messages.
[![Commit message style](https://img.shields.io/badge/commit%20messages-seven%20rules-blue.svg)](https://chris.beams.io/posts/git-commit)
License
Licensed under the MIT License.