 Duster 通配符路徑匹配:自定義 include/exclude 規(guī)則終極指南)
如何玩轉(zhuǎn) Duster 通配符路徑匹配自定義 include/exclude 規(guī)則終極指南【免費(fèi)下載鏈接】dusterAutomatic configuration for Laravel apps to apply Tightens standard linting code standards.項(xiàng)目地址: https://gitcode.com/gh_mirrors/du/dusterDuster 是一款專(zhuān)為 Laravel 應(yīng)用打造的自動(dòng)代碼規(guī)范工具能一鍵應(yīng)用 Tighten 團(tuán)隊(duì)的標(biāo)準(zhǔn) Linting 規(guī)則。對(duì)于大型項(xiàng)目你往往只想檢查app和tests目錄或跳過(guò)某個(gè)模塊——這正是 Duster 的include/exclude 通配符路徑匹配大顯身手的地方。本文帶你從零掌握通配符寫(xiě)法精準(zhǔn)控制 Duster 掃描哪些文件。先認(rèn)識(shí) duster.json 配置文件Duster 在運(yùn)行時(shí)會(huì)自動(dòng)讀取項(xiàng)目根目錄下的duster.json通過(guò)include只檢查這些路徑和exclude跳過(guò)這些路徑兩個(gè)數(shù)組來(lái)限定掃描范圍。你可以參考 Duster 項(xiàng)目自己的配置文件 duster.json{ include: [app, config, standards, tests], exclude: [tests/Fixtures] }include是白名單一旦填寫(xiě)只有列出的路徑會(huì)被檢查exclude是黑名單在默認(rèn)掃描范圍內(nèi)剔除指定路徑。兩者可以組合使用。通配符語(yǔ)法3 個(gè)模式必須掌握Duster 的 include/exclude 支持 glob 通配符由 DusterConfig.php 中的expandWildcards和globPath方法實(shí)現(xiàn)最常用的有 3 種模式含義示例目錄名精確匹配整個(gè)目錄app**/目錄名/**匹配任意深度下的同名目錄**/vendor/***.php/ 具體文件名匹配單個(gè)文件或后綴IncludeClass.php舉一個(gè)真實(shí)的通配符用例來(lái)自官方測(cè)試夾具 DusterConfigWildcard/duster.json{ include: [**/Include2/**], exclude: [**/Exclude2/**] }這里的**表示任意層級(jí)的目錄所以無(wú)論Include2出現(xiàn)在第幾層都會(huì)被納入檢查而Exclude2無(wú)論在多深的嵌套里都會(huì)被跳過(guò)。對(duì)應(yīng)的效果驗(yàn)證可以看 DusterConfigWildcardTest.php被排除的ExcludeClass.php不會(huì)出現(xiàn)在 Lint 報(bào)告中。匹配機(jī)制的幾個(gè)小細(xì)節(jié)自動(dòng)過(guò)濾 PHP 文件通配符展開(kāi)后只會(huì)保留.php、.php.inc、.php.stub、.php.skeleton后綴的文件見(jiàn) DusterConfig.php所以不用自己寫(xiě)**/*.php。路徑分隔符隨便寫(xiě)Windows 反斜杠會(huì)自動(dòng)轉(zhuǎn)換為正斜杠配置在跨平臺(tái)團(tuán)隊(duì)中更安全。尾部的/或/*會(huì)被自動(dòng)清理寫(xiě)tests/和tests效果一樣。5 個(gè)實(shí)戰(zhàn)場(chǎng)景的 include/exclude 寫(xiě)法場(chǎng)景 1只檢查核心目錄{ include: [app, tests] }場(chǎng)景 2排除測(cè)試夾具和生成代碼Duster 官方寫(xiě)法{ exclude: [tests/Fixtures] }場(chǎng)景 3排除任意深度下的某個(gè)模塊{ exclude: [**/legacy/**] }場(chǎng)景 4精確包含單個(gè)腳本文件{ include: [bin/deploy.php] }場(chǎng)景 5只放行某一層目錄{ include: [app/Modules] }避坑指南這些路徑 Duster 永遠(yuǎn)跳過(guò)即使你不寫(xiě)Duster 也內(nèi)置了一份默認(rèn)排除清單DusterConfig.php 的$defaultExclude包括vendor/、node_modules/、storage/、bootstrap/cache/、build/、tests/Pest.php以及_ide_helper*.php等 IDE 輔助文件。其中vendor 和 node_modules 是強(qiáng)制排除的無(wú)法被配置覆蓋——這是為了防止誤掃海量依賴代碼拖慢執(zhí)行速度。寫(xiě)完后如何快速驗(yàn)證規(guī)則生效配置改完直接用 lint 命令驗(yàn)證完整用法見(jiàn) README.md./vendor/bin/duster lint ./vendor/bin/duster fix如果只想檢查 Git 中有未提交改動(dòng)的文件加上--dirty選項(xiàng)即可適合開(kāi)發(fā)中快速反饋./vendor/bin/duster lint --dirty輸出中如果看到被排除文件的報(bào)錯(cuò)消失、被包含的文件正常出現(xiàn)在報(bào)告里說(shuō)明你的通配符規(guī)則已經(jīng)配置成功。?小結(jié)duster.json的include是白名單、exclude是黑名單支持 glob 通配符**可匹配任意層級(jí)目錄是排除深層嵌套模塊的利器PHP 文件過(guò)濾和vendor/、node_modules/等默認(rèn)排除是自動(dòng)生效的無(wú)需重復(fù)配置改完配置用duster lint立即驗(yàn)證養(yǎng)成配置即驗(yàn)證的習(xí)慣掌握這些技巧后無(wú)論項(xiàng)目結(jié)構(gòu)多復(fù)雜你都能讓 Duster 的掃描范圍精準(zhǔn)可控既提速又不漏檢?!久赓M(fèi)下載鏈接】dusterAutomatic configuration for Laravel apps to apply Tightens standard linting code standards.項(xiàng)目地址: https://gitcode.com/gh_mirrors/du/duster創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考