news 2026/8/22 12:54:40

Duster 配置完全手册:include、exclude、scripts 与 processTimeout 全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Duster 配置完全手册:include、exclude、scripts 与 processTimeout 全解析

Duster 配置完全手册:include、exclude、scripts 与 processTimeout 全解析

【免费下载链接】dusterAutomatic configuration for Laravel apps to apply Tighten's standard linting & code standards.项目地址: https://gitcode.com/gh_mirrors/du/duster

Duster 是一款专为 Laravel 应用打造的代码规范 linting 工具,可自动应用 Tighten 团队默认的 PHP 代码风格。它的核心配置全部集中在项目根目录的duster.json文件中,通过includeexcludescriptsprocessTimeout四个关键字段,你可以精确控制 Duster 检查哪些文件、跳过哪些文件、追加哪些自定义脚本,以及脚本运行的超时时间。本文带你一次性掌握 Duster 配置的完整用法。

快速上手:安装 Duster 并运行首次检查

使用 Composer 一行命令安装 Duster:

composer require tightenco/duster --dev

安装完成后,两条命令即可分别完成"检查"与"自动修复":

./vendor/bin/duster lint # 检查所有代码问题 ./vendor/bin/duster fix # 自动修复所有可修复的问题

当你需要更精细的控制时,只需在项目根目录创建duster.json配置文件。Duster 启动时会自动读取该文件,加载逻辑位于 app/Support/DusterConfig.php 的loadLocal()方法中——如果文件不是合法的 JSON,Duster 会直接报错提示,这一点在配置时务必注意。

配置 include:精确指定 Duster 检查哪些目录

include字段以数组形式列出需要检查的目录或文件,只会被其中包含的 PHP 文件处理。Duster 默认只识别这几种后缀:.php.php.inc.php.stub.php.skeleton(见 DusterConfig.php)。

一个典型的 Laravel 项目配置如下:

{ "include": [ "bin", "scripts", "src", "tests" ] }

🔍小贴士include支持通配符写法。例如"**/Include2/**"可以递归匹配任意层级下的Include2目录。官方测试用例 tests/Fixtures/DusterConfigWildcard/duster.json 就演示了通配符 include/exclude 的实际效果,扩展实现位于 DusterConfig.php 的expandWildcards()方法。

配置 exclude:跳过不想被检查的文件

exclude字段用于排除测试夹具、生成文件等不希望 Duster 介入的内容。Duster 内置了一份默认排除列表(DusterConfig.php 中的$defaultExclude),已经自动包含:

默认排除项说明
vendor/Composer 依赖目录
node_modules/前端依赖目录
storage/运行时存储目录
bootstrap/cache/框架缓存目录
build/构建产物目录
_ide_helper.phpIDE 辅助文件
tests/Pest.phpPest 测试框架引导文件

⚠️注意:这些路径会被自动排除,你在exclude里再写一遍vendornode_modules是多余的,Duster 会直接过滤掉这类重复项。实际项目中通常只需排除测试夹具即可:

{ "exclude": [ "tests/Fixtures" ] }

exclude同样支持通配符,比如"**/folderToExclude/**"可排除任意深度的指定文件夹。Duster 自身仓库的配置 duster.json 就是很好的参考范例。

配置 scripts:让 Duster 顺带运行你的自定义脚本

这是 Duster 最强大的能力之一——它不仅能跑内置的 TLint、PHP_CodeSniffer、PHP CS Fixer 和 Pint,还能把你的 PHPStan、Pest 等任意脚本编排进统一的 lint / fix 流程。

scripts下按lintfix两个分组声明,键是脚本名称,值是命令参数数组

{ "scripts": { "lint": { "phpstan": ["./vendor/bin/phpstan", "analyse"], "pest": ["./vendor/bin/pest"] } } }

之后运行duster lint时,这些脚本会被自动执行;某个脚本失败会导致整体流程失败,非常适合接入 CI。

如果你只想运行指定工具,可以用--using参数按名称挑选并控制执行顺序:

./vendor/bin/duster lint --using="phpstan,tlint,pint"

脚本的执行与超时处理逻辑见 app/Support/UserScript.php。

配置 processTimeout:自定义脚本超时时间

自定义脚本默认在60 秒后超时。如果你的 PHPStan 分析或 Pest 测试跑得比较久,可以用processTimeout字段(单位:秒)覆盖默认值:

{ "processTimeout": 120 }

⏱️ 如果超时发生,Duster 会打印友好的提示信息,直接告诉你"可以用 duster.json 中的 processTimeout 键来覆盖此超时",无需翻文档就能定位问题。

完整配置示例:四字段一次配齐

把前面四部分内容组合起来,就是一份功能齐全的duster.json

{ "include": [ "app", "config", "tests" ], "exclude": [ "tests/Fixtures" ], "scripts": { "lint": { "PHPStan": ["./vendor/bin/phpstan", "analyse"] } }, "processTimeout": 120 }

这份配置的来源正是 Duster 仓库自身的 duster.json,可直接复制后按项目结构调整。

新手常见疑问 🧹

  • 必须创建 duster.json 吗?不是。不创建时 Duster 使用内置的默认行为;创建后即可获得目录级、脚本级的完全控制权。
  • 通配符怎么写?使用标准的 glob 语法,如**/folder/**;路径分隔符统一用/,Windows 下也会被自动兼容。
  • 为什么我加了 exclude 的 vendor 没生效?因为vendor/本就在默认排除列表中,无需重复配置。
  • 如何验证配置是否生效?运行./vendor/bin/duster lint,观察输出的文件列表即可确认 include/exclude 是否符合预期;参考测试 tests/Feature/DusterConfigTest.php 中的验证方式。

掌握includeexcludescriptsprocessTimeout这四个字段,你就拥有了 Duster 的全部配置能力——从此一条命令,让团队的 Laravel 代码风格保持一致。

【免费下载链接】dusterAutomatic configuration for Laravel apps to apply Tighten's standard linting & code standards.项目地址: https://gitcode.com/gh_mirrors/du/duster

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 12:48:09

ThinkPad X390 装 macOS 完整指南:一份开箱即用的 OpenCore EFI

ThinkPad X390 装 macOS 完整指南:一份开箱即用的 OpenCore EFI 【免费下载链接】ThinkpadX390-Opencore-EFI macOS Catalina & Big Sur & Monterey on ThinkPad X390 (Hackintosh) 项目地址: https://gitcode.com/gh_mirrors/th/ThinkpadX390-Opencore-E…

作者头像 李华
网站建设 2026/8/22 12:47:32

题解:洛谷 P8901 [USACO22DEC] Circular Barn S

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

作者头像 李华
网站建设 2026/8/22 12:45:23

【计算机网络 实验七】LINUX环境下UDP通信程序设计

实验记录,可能存在错误,仅供学习参考第1关UDP套接字创建与端口绑定1、双击打开桌面上的工作区文件夹workspace,再双击实训文件夹myshixun,打开文件message7-1.txt。2、在/home/headless/Desktop/workspace/myshixun/client/目录下…

作者头像 李华
网站建设 2026/8/22 12:44:21

VSCode配置js教程及VS Code常用教程

文章目录一、基础环境搭建二、核心插件配置浏览器调试一、基础环境搭建 安装 Node.js & npm 从 Node.js 官网 下载 LTS 版本安装包,安装时勾选自动配置环境变量选项,自定义安装位置,一直到最后安装,其它不要勾选。 验证安…

作者头像 李华