You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Prettier配置转换assets/js下所有子目录的JS文件?

解决Prettier无法递归格式化JS子目录文件的问题

嘿,我来帮你搞定这个Prettier递归格式化的问题!你遇到的情况其实很常见,问题出在shell对glob模式(也就是你用的**)的解析方式上。

核心原因

默认情况下,像bash这类shell并不会自动把**解析成递归匹配所有子目录,它只会匹配当前目录下的内容。这就导致你的命令只能处理js目录直接下的文件,而碰不到子目录里的文件。

快速解决方案

这里有几个靠谱的办法,按推荐程度排序:

  1. 用引号包裹glob表达式,让Prettier自己处理递归
    把你的命令改成这样:

    prettier --config .prettierrc --write './resources/assets/js/**/*.js'
    

    加引号的作用是阻止shell提前解析glob模式,把递归匹配的任务交给Prettier处理。另外加上/*.js能确保只匹配JS文件,避免误格式化其他类型文件。

  2. 开启shell的globstar选项(针对bash/zsh)
    如果你不想用引号,可以先在终端里执行这条命令打开globstar:

    shopt -s globstar
    

    之后再运行你原来的命令,**就会正确递归匹配所有子目录了。不过这个设置是临时的,关闭终端就会失效,要是想永久生效,可以把这条命令添加到你的~/.bashrc或~/.zshrc文件里。

  3. 明确指定递归路径
    也可以直接把当前目录和子目录的JS文件都列出来:

    prettier --config .prettierrc --write ./resources/assets/js/ ./resources/assets/js/**/*.js
    

    不过这个写法不如第一种简洁,还是优先推荐第一种方案。

额外检查点

如果试了上面的方法还是不行,可以做这两个检查:

  • 确认你的Prettier是较新版本,旧版本对glob的支持可能有bug;
  • 检查你的.prettierrc配置里有没有用ignorePatterns排除子目录的规则。

内容的提问来源于stack exchange,提问作者Andrew Kordampalos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:17:46