为什么 Laravel 项目需要 Duster:一个命令统一 4 大代码规范检查工具
【免费下载链接】dusterAutomatic configuration for Laravel apps to apply Tighten's standard linting & code standards.项目地址: https://gitcode.com/gh_mirrors/du/duster
如果你正在维护一个 Laravel 项目,是否被各种 PHP 代码风格工具搞得焦头烂额?Duster 就是为解决这个问题而生的——它是一个开源的命令行工具,用一条命令就能自动应用 Tighten 公司默认的代码风格标准,统一跑通 4 大检查工具:TLint、PHP_CodeSniffer、PHP CS Fixer、Pint。无论是检查(lint)还是自动修复(fix),只需一个duster命令即可完成。
🧹 4 大工具如何各司其职
Duster 本身并不是又一个全新的检查器,而是把 4 个成熟工具"拧成一股绳",让它们协同工作、互不冲突。每个工具负责不同的检查维度:
| 工具 | 职责定位 | 核心能力 |
|---|---|---|
| TLint | 补位其他工具 | 检查 Laravel 和 PHP 中其他工具覆盖不到的问题(Tighten预设) |
| PHP_CodeSniffer | 发现无法自动修复的问题 | 基于Tighten预设(近似 PSR-1 + Tighten 自定义规则) |
| PHP CS Fixer | 补充 Pint 不支持的规则 | 自定义类成员排序规则(CustomOrderedClassElementsFixer) |
| Pint | Laravel 官方代码风格 | 使用默认Laravel预设 + 少量 Tighten 定制规则 |
这种"分工协作"的设计,正是 Duster 相比单一工具的最大优势——一次命令,覆盖所有检查维度。
各工具在 Duster 中的接入实现分别位于:
- TLint:app/Support/TLint.php
- PHP_CodeSniffer:app/Support/PhpCodeSniffer.php
- PHP CS Fixer:app/Support/PhpCsFixer.php
- Pint:app/Support/Pint.php
🚀 一键安装步骤
得益于 Composer,整个安装过程仅需一条命令,无需任何额外配置:
composer require tightenco/duster --dev安装完成后,你就可以在vendor/bin/目录下直接调用duster命令了。整个过程干净利落,对新手非常友好。
⚡ 最快配置与使用方法
检查代码规范(lint)
想一次性检查所有文件,只需运行:
./vendor/bin/duster lint自动修复代码规范(fix)
发现大量可自动修复的问题?一条命令全部搞定:
./vendor/bin/duster fix只检查有改动的文件(--dirty)
日常开发中,你可能只关心本次提交的代码是否规范。借助--dirty参数,Duster 会只检查 Git 中有未提交改动的文件,大幅缩短等待时间:
./vendor/bin/duster lint --dirty # 或 ./vendor/bin/duster fix --dirty查看全部可用命令
./vendor/bin/duster # 或 ./vendor/bin/duster commands💡Sail 用户专属技巧:如果你使用 Laravel Sail 容器环境,可以通过
./vendor/bin/sail bin duster直接在容器内执行,省去本地安装 PHP 的麻烦。
🛠️ 用 duster.json 自定义检查范围
Duster 默认会扫描 Laravel 项目的所有标准目录。但如果你想精确控制哪些文件参与检查,只需在项目根目录创建一个duster.json配置文件:
{ "include": [ "bin", "scripts", "src", "tests" ], "exclude": [ "tests/fixtures", "**/folderToExclude/**" ] }这个配置支持**通配符(wildcard)**匹配,能灵活应对各种复杂的项目结构。配置解析的核心逻辑位于 app/Support/DusterConfig.php。
此外,Duster 还内置了vendor/、node_modules/、storage/等常见目录的默认排除规则,让你开箱即用,不必反复排除。
你还可以在duster.json的scripts字段中挂载额外的检查脚本(比如 PHPStan),Duster 会在 lint 或 fix 时自动一并执行:
{ "scripts": { "lint": { "phpstan": ["./vendor/bin/phpstan", "analyse"] } }, "processTimeout": 120 }本仓库自身的 duster.json 就是一个很好的参考示例,它展示了如何挂载 PHPStan 和 Pest 测试。
想控制具体使用哪些工具、以什么顺序执行?使用--using参数即可自定义工具链:
./vendor/bin/duster lint --using="phpstan,tlint,pint"🤖 接入 CI/CD 与 Git Hooks,让规范"永不被绕过"
光靠开发者自觉是不够的。Duster 提供了两套"自动化守卫"方案,确保代码规范在团队协作中始终得到执行:
方案一:发布 GitHub Actions 配置
./vendor/bin/duster github-actions执行后,Duster 会自动生成 lint 和 fix 两种工作流文件,让每一次 CI 构建都自动检查代码风格。
方案二:发布 Husky Hooks
./vendor/bin/duster husky-hooks配置后,每次git commit都会自动触发 Duster 检查,把不规范的代码拦截在提交之前。
🐳容器环境提示:如果你在容器化环境(未本地安装 PHP)中使用 Husky Hooks,可用
--env参数指定环境,例如./vendor/bin/duster husky-hooks --env=ddev。支持ddev、warden、lando和sail四种环境。
❓ 常见问题速览
问:Duster 和单独的 Pint 有什么区别?
答:Pint 只覆盖 Laravel 官方风格,而 Duster 在它之上叠加了 TLint、PHP_CodeSniffer、PHP CS Fixer 三个工具,覆盖面更广,且统一了配置和入口。
问:如何调整某个工具的规则?
答:各工具仍保留独立的配置文件约定,例如 PHP_CodeSniffer 使用.phpcs.xml.dist、PHP CS Fixer 使用.php-cs-fixer.dist.php、Pint 使用 standards/pint.json 作为起点。你可以在此基础上做个性化定制。
问:Duster 对 PHP 版本有要求吗?
答:需要 PHP 8.2 及以上版本。
✨ 写在最后
Duster 用"一个命令统一 4 大工具"的极简设计,把 Laravel 项目中原本繁琐、分散的代码规范检查工作彻底自动化了。它既适合个人开发者快速规范新项目,也适合团队协作中统一代码风格、减少 Code Review 中的"风格之争"。如果你的 Laravel 项目还没有一套稳定的代码风格标准,不妨现在就composer require tightenco/duster --dev,一条命令开启规范之旅。
【免费下载链接】dusterAutomatic configuration for Laravel apps to apply Tighten's standard linting & code standards.项目地址: https://gitcode.com/gh_mirrors/du/duster
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考