Quick Commitlint documentation
Presets
Compare every Conventional and Angular preset rule, type, and default used by Quick Commitlint.
Quick Commitlint includes two built-in presets: conventional and angular. They model the corresponding commitlint 21.2 configurations and can be selected with the top-level preset property.
{
"preset": "angular"
}
If preset is omitted, conventional is used. Project rules are applied after the preset and override only the named defaults.
Complete preset comparison
[0] means disabled, 1 is a warning, and 2 is an error.
| Rule | Conventional default | Angular default |
|---|---|---|
body-leading-blank |
[1, "always"] |
[1, "always"] |
body-max-line-length |
[2, "always", 100] |
[0] |
footer-leading-blank |
[1, "always"] |
[1, "always"] |
footer-max-line-length |
[2, "always", 100] |
[0] |
header-max-length |
[2, "always", 100] |
[2, "always", 72] |
header-trim |
[2, "always"] |
[0] |
scope-case |
[0] |
[2, "always", "lower-case"] |
subject-case |
[2, "never", ["sentence-case", "start-case", "pascal-case", "upper-case"]] |
[2, "never", ["sentence-case", "start-case", "pascal-case", "upper-case"]] |
subject-empty |
[2, "never"] |
[2, "never"] |
subject-exclamation-mark |
[0] |
[2, "never"] |
subject-full-stop |
[2, "never", "."] |
[2, "never", "."] |
type-case |
[2, "always", "lower-case"] |
[2, "always", "lower-case"] |
type-empty |
[2, "never"] |
[2, "never"] |
type-enum |
[2, "always", ["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test"]] |
[2, "always", ["build", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test"]] |
Conventional
The default preset accepts common Conventional Commit headers and limits headers, body lines, and footer lines to 100 code points.
feat(parser): add fast validation
fix!: remove the obsolete fallback
chore(release): publish binaries
Scopes are not case-checked and the ! breaking marker is allowed. Subjects must be present, must not end in ., and must not match sentence, start, Pascal, or uppercase forms.
Angular
The Angular preset is stricter about headers:
- The header limit is 72 code points.
- Scopes must be lowercase.
- The
!breaking marker is rejected. choreis not an allowed type.- Body and footer line limits are disabled.
- Header trimming is disabled.
feat(core): add signal support
fix(router): preserve query parameters
Use a BREAKING CHANGE: footer rather than ! when following this preset.
Type reference
The linter checks only whether a type appears in type-enum; these descriptions are conventions for authors and reviewers.
| Type | Intended use | Presets |
|---|---|---|
build |
Build system or external dependency changes | Both |
chore |
Maintenance that does not fit another user-facing category | Conventional only |
ci |
Continuous integration configuration and scripts | Both |
docs |
Documentation-only changes | Both |
feat |
A new feature | Both |
fix |
A bug fix | Both |
perf |
A performance improvement | Both |
refactor |
Code changes that are neither a feature nor a bug fix | Both |
revert |
Reverting an earlier change | Both |
style |
Formatting or style changes without behavior changes | Both |
test |
Adding or correcting tests | Both |
Override a preset
This example starts with Angular, permits chore, raises the header limit, and allows the ! marker:
{
"preset": "angular",
"rules": {
"header-max-length": [2, "always", 100],
"subject-exclamation-mark": [0],
"type-enum": [
2,
"always",
["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test"]
]
}
}
Unsupported preset names
Any name other than conventional or angular is a configuration error with exit status 2. Quick Commitlint does not load npm preset packages or accept names such as @commitlint/config-conventional; use the short built-in name.
See Configuration for the complete JSON grammar and Rules for each rule's behavior.