choerulumam/commitlint-php
Composer 安装命令:
composer require choerulumam/commitlint-php
包简介
A powerful Git hooks and commit message linting tool for PHP projects - PHP 7.3+ compatible
README 文档
README
A powerful Git hooks and commit message linting tool for PHP projects - combining the best of husky and commitlint in a native PHP implementation.
🚀 Features
- 🎯 Commit Message Validation - Enforce conventional commit format with customizable rules
- 🪝 Git Hooks Management - Easy installation and management of Git hooks
- ⚙️ Flexible Configuration - Configure via
.commitlintrc.jsonorcomposer.json - 🔧 Developer Friendly - Beautiful CLI output with helpful error messages
- 📦 Minimal Dependencies - Only requires Symfony Console component
- 🧪 Fully Tested - Comprehensive test suite with PHPUnit
- 🎨 PHP 7.3+ Compatible - Works with PHP 7.3 through PHP 8.3
- 🔒 Security First - Built-in security features and input validation
Requirements
- PHP >= 7.3
- Composer
- Git
📦 Installation
Install via Composer:
composer require --dev choerulumam/commitlint-php
🔧 Quick Start
1. Install Git Hooks
vendor/bin/commitlint install
2. Start Making Commits!
# ✅ Valid commits git commit -m "feat: add user authentication" git commit -m "fix(auth): resolve login validation issue" git commit -m "docs: update README with examples" # ❌ Invalid commits (will be rejected) git commit -m "added new feature" # Missing type git commit -m "FIX: something" # Invalid type case
📋 Commands
Install Hooks
Install Git hooks and create default configuration:
vendor/bin/commitlint install [options]
Options:
--force, -f- Force installation even if hooks already exist--skip-config- Skip creating default configuration file
Validate Commit Message
Validate commit messages against your configuration:
# Validate current commit message (from .git/COMMIT_EDITMSG) vendor/bin/commitlint validate # Validate specific message vendor/bin/commitlint validate "feat: add new feature" # Validate from file vendor/bin/commitlint validate --file=commit.txt # Quiet mode (exit code only) vendor/bin/commitlint validate --quiet
Options:
--file, -f- Read commit message from specific file--quiet, -q- Suppress output (exit code only)
Show Status
Display installed hooks and configuration:
vendor/bin/commitlint status
Uninstall
Remove all installed Git hooks:
vendor/bin/commitlint uninstall [--force]
⚙️ Configuration
CommitLint PHP can be configured via .commitlintrc.json file or within your composer.json. The tool automatically merges your custom configuration with sensible defaults.
Configuration File Priority
.commitlintrc.jsonin your project rootextra.commitlint-phpincomposer.json- Default configuration
Complete Configuration Reference
{
"rules": {
"type": {
"required": true,
"allowed": ["feat", "fix", "docs", "style", "refactor", "perf", "test", "chore", "ci", "build", "revert"]
},
"scope": {
"required": false,
"allowed": []
},
"subject": {
"min_length": 1,
"max_length": 100,
"case": "any",
"end_with_period": false
},
"body": {
"max_line_length": 100,
"leading_blank": true
},
"footer": {
"leading_blank": true
}
},
"hooks": {
"commit-msg": true,
"pre-commit": false,
"pre-push": false
}
}
Configuration Options
Type Rules (rules.type)
required(boolean, default:true) - Whether commit type is requiredallowed(array, default: see above) - Array of allowed commit types
Scope Rules (rules.scope)
required(boolean, default:false) - Whether commit scope is requiredallowed(array, default:[]) - Array of allowed scopes (empty = any scope allowed)
Subject Rules (rules.subject)
min_length(int, default:1) - Minimum subject lengthmax_length(int, default:100) - Maximum subject lengthcase(string, default:"any") - Case requirement:"lower","upper", or"any"end_with_period(boolean, default:false) - Whether subject must end with period
Body Rules (rules.body)
max_line_length(int, default:100) - Maximum line length for body (0 = no limit)leading_blank(boolean, default:true) - Require blank line between subject and body
Footer Rules (rules.footer)
leading_blank(boolean, default:true) - Require blank line between body and footer
Hook Configuration (hooks)
Control which Git hooks are installed:
{
"hooks": {
"commit-msg": true, // Validate commit messages
"pre-commit": false, // Run before commits
"pre-push": false // Run before pushes
}
}
📖 Example Configurations
Minimal Configuration
{
"rules": {
"type": {
"allowed": ["feat", "fix", "docs", "chore"]
},
"subject": {
"max_length": 50
}
}
}
Strict Configuration
{
"rules": {
"type": {
"required": true,
"allowed": ["feat", "fix", "docs", "test", "refactor", "chore"]
},
"scope": {
"required": true,
"allowed": ["auth", "api", "ui", "db", "config", "test", "docs"]
},
"subject": {
"min_length": 10,
"max_length": 50,
"case": "lower",
"end_with_period": false
}
}
}
Configuration in composer.json
{
"extra": {
"commitlint-php": {
"rules": {
"type": {
"allowed": ["feat", "fix", "docs", "test", "chore"]
}
}
}
}
}
📝 Commit Message Format
This package enforces the Conventional Commits specification:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Examples
# Simple commit feat: add user registration # With scope feat(auth): add JWT token validation # With body and footer feat(api): add user endpoints Add comprehensive user management endpoints including: - GET /api/users - POST /api/users - PUT /api/users/{id} - DELETE /api/users/{id} Closes #123 # Breaking change feat(api)!: redesign user authentication BREAKING CHANGE: The authentication API has been completely redesigned. All existing tokens will be invalidated.
Default Commit Types
feat- New featuresfix- Bug fixesdocs- Documentation changesstyle- Code style changes (formatting, etc)refactor- Code refactoringperf- Performance improvementstest- Adding or updating testschore- Maintenance tasksci- CI/CD changesbuild- Build system changesrevert- Reverting previous commits
Special Commit Types (Auto-Skip Validation)
The following commit types automatically skip validation:
- Merge commits -
Merge branch "feature" into main - Revert commits -
Revert "feat: add user authentication" - Initial commits -
Initial commit - Fixup commits -
fixup! feat: add user authentication
🛠️ Development
Running Tests
# Run all tests composer test # With coverage composer test:coverage
🤝 Contributing
Contributions are welcome! Please read our Contributing Guide for details.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Inspired by husky and commitlint
- Inspired by dev-kraken/php-commitlint
- Built with Symfony Console
Author
chumam2050 - choerulumam2050@gmail.com
choerulumam/commitlint-php 适用场景与选型建议
choerulumam/commitlint-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 1, 最近一次更新时间为 2025 年 11 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「git」 「validation」 「commit」 「git-hooks」 「conventional-commits」 「commitlint」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 choerulumam/commitlint-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 choerulumam/commitlint-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 choerulumam/commitlint-php 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Easily manage git hooks in your composer config
MediaWiki extension that allows embedding external content, specified by URL, into your wiki pages
Nagios plugin to verify a git repository.
A Laravel queue connector to process jobs after successful transactions commits
An intelligent Git helper package for Laravel applications. It utilizes OpenAI's GPT to analyze your Git repository, providing features such as automatic generation of commit messages based on staged changes.
Adds request-parameter validation to the SLIM 3.x PHP framework
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 26
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-14