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>
npm install @speedy/commit-msg-hook --save-dev
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 |
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.
{
"rules": {
"message": {
"skip-validation": "^(Merge|Revert)\\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": [
"amend",
"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
}
}
}
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
}
}
}