5月27日 22:01
Prettier 性能优化有哪些手段?
核心答案
Prettier 性能优化有四个关键手段:缩小格式化范围、启用缓存、使用高性能解析器、升级 CLI。按收益从大到小排列:
1. 只格式化变更文件——收益最大。用 lint-staged 配合 git hooks,仅处理暂存区文件,避免全量格式化:
json{ "lint-staged": { "*.{js,ts,tsx,json,css,md}": ["prettier --write"] } }
2. 启用缓存——Prettier 3.x 支持 --cache,重复格式化时跳过未变更文件,配合 --cache-strategy=content 更精准(基于文件内容而非修改时间):
bashprettier --write --cache --cache-strategy=content "src/**/*.{js,ts}"
3. 换 Rust 解析器——安装 @prettier/plugin-oxc,用 OXC 替代默认解析器,单文件解析速度提升数倍:
json{ "plugins": ["@prettier/plugin-oxc"] }
4. 开启实验性快速 CLI——Prettier 3.6+ 提供 --experimental-cli,实测 375 个 TSX 文件从 11 秒降到 1 秒:
bashPRETTIER_EXPERIMENTAL_CLI=1 prettier --write .
OXC 插件 + 快速 CLI 组合使用效果最佳。同时别忘配置 .prettierignore 排除 node_modules、dist、*.min.js 等无需格式化的文件。
追问:Prettier 和 ESLint 怎么配合?
用 eslint-config-prettier 关闭 ESLint 中与 Prettier 冲突的规则,再用 eslint-plugin-prettier 把格式问题作为 lint 错误报告。简洁配置:
jsmodule.exports = { extends: ["prettier"], // 放最后,覆盖前面的格式规则 };
追问:Prettier 慢到不可接受怎么办?
考虑 Oxfmt——Oxc 团队推出的独立格式化工具,基于 Rust 构建,比 Prettier 快 30 倍以上,且已通过 100% Prettier 兼容性测试。适合大型 monorepo 中对速度极度敏感的场景。代价是脱离 Prettier 生态,部分插件不兼容。