Custom commitlint configuration for cbashik projects following conventional commits with additional rules and types.
npm install --save-dev @cbashik/commitlint @commitlint/cli
# or
yarn add --dev @cbashik/commitlint @commitlint/cli
# or
pnpm add -D @cbashik/commitlint @commitlint/cliCreate a commitlint.config.js file in your project root:
module.exports = {
extends: ['@cbashik/commitlint']
};Or extend it in your package.json:
{
"commitlint": {
"extends": ["@cbashik/commitlint"]
}
}<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
- Header length: 10-100 characters
- Subject length: 3-80 characters
- Body line length: Max 100 characters
- Type: Required, lowercase
- Scope: Optional, lowercase, max 20 characters
- Subject: Required, lowercase, no period at end
feat- A new featurefix- A bug fixdocs- Documentation only changesstyle- Code style changes (formatting, missing semi-colons, etc)refactor- Code refactoring without feature changes or bug fixesperf- Performance improvementstest- Adding or updating testsbuild- Build system or external dependency changesci- CI configuration changeschore- Other changes that don't modify src or test filesrevert- Reverts a previous commithotfix- Critical fixes for immediate deploymentrelease- Release commits
✅ Valid commits:
feat: add user authentication
fix(auth): resolve token expiration issue
docs: update API documentation
chore: update dependencies
feat(api): implement OAuth2 integration
hotfix: fix critical security vulnerability
❌ Invalid commits:
Update stuff # Missing type
FEAT: add feature # Wrong case
feat: Add new feature. # Subject starts with capital and ends with period
feat:add feature # Missing space after colon
f: add feature # Subject too short
feat: this is a very long commit message that exceeds the maximum allowed length for the header # Header too long
Add to your package.json:
{
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}Or with Husky v6+, create .husky/commit-msg:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no -- commitlint --edit $1MIT