如何生成Prettier命令行调用会处理的所有文件列表?
获取Prettier待处理文件列表的更优方案
你可以通过以下两种方式替代虚拟插件方案,直接获取和Prettier标准调用完全一致的文件列表:
方案1:复用Prettier内部API编写脚本
直接调用Prettier CLI的核心文件匹配逻辑,无需维护虚拟插件。创建一个名为list-prettier-files.js的脚本:
const { expandPatterns } = require("prettier/src/cli/expand-patterns"); const { loadOptions } = require("prettier/src/cli/options"); async function listFiles() { const options = await loadOptions({ cwd: process.cwd() }); const files = await expandPatterns(["."], options); files.forEach(file => console.log(file)); } listFiles().catch(err => { console.error(err); process.exit(1); });
运行脚本即可输出所有待处理文件:
node list-prettier-files.js
这个脚本会自动读取项目中的.prettierrc、.prettierignore、已配置的解析器/插件等,生成的文件列表和prettier .完全一致,是最可靠的方案。
方案2:利用CLI参数组合快速实现
如果不想编写脚本,可以通过Prettier的日志输出提取文件名:
npx prettier --check --loglevel debug . 2>&1 | grep "Checking" | sed 's/Checking //'
该命令通过开启debug日志,过滤出Prettier检查文件的日志行,再移除前缀得到文件名。虽然依赖Prettier的日志格式,但无需额外代码,适合临时场景或简单CI流程。
对比原方案的优势
- 无需维护虚拟插件和解析警告信息,减少额外代码维护成本;
- 直接复用Prettier内部逻辑,避免因版本更新导致的兼容性问题;
- 脚本方案可集成到CI流水线中,输出稳定可靠。
内容的提问来源于stack exchange,提问作者Glen Whitney
相关产品推荐
相关产品推荐

