Prettier 命令行工具(CLI)使用完全指南
Prettier 是一个流行的代码格式化工具,通过其命令行界面(CLI)可以方便地在各种开发环境中使用。本文将全面介绍 Prettier CLI 的核心功能和使用技巧。
基础使用
Prettier CLI 的基本命令格式如下:
prettier [选项] [文件/目录/通配符...]
要格式化文件并保存更改,使用 --write 选项:
prettier . --write
这个命令会格式化当前目录及其子目录下所有 Prettier 支持的文件。
重要提示:
- 使用
.prettierignore文件来排除不需要格式化的文件 - 建议将格式化选项(如引号类型、尾随逗号等)放在配置文件中,而不是通过 CLI 参数传递
文件匹配模式
Prettier CLI 处理文件路径/模式时有以下行为:
- 如果路径指向实际存在的文件,直接处理该文件
- 如果路径指向目录,递归查找该目录下支持的文件
- 否则,将条目解析为 glob 模式
特殊注意事项:
- 默认会忽略
node_modules目录(可通过--with-node-modules覆盖) - 不会跟随符号链接
- 转义特殊字符有两种方式:
prettier "\[my-dir]/*.js"或prettier "[[]my-dir]/*.js"
常用选项详解
检查格式化状态 (--check)
检查文件是否已格式化而不实际修改文件:
prettier . --check
输出示例:
- 全部文件已格式化:
Checking formatting... All matched files use Prettier code style! - 有文件需要格式化:
Checking formatting... [warn] src/fileA.js [warn] src/fileB.js [warn] Code style issues found in 2 files. Run Prettier with --write to fix.
退出码说明:
0: 全部文件已格式化1: 有文件需要格式化2: Prettier 自身出错
调试检查 (--debug-check)
担心格式化可能改变代码正确性?使用 --debug-check 选项:
prettier . --debug-check
这会检测格式化是否改变了代码语义,但不能与 --write 同时使用。
列出需要格式化的文件 (--list-different)
类似 --check,但只输出文件名,适合管道操作:
prettier . --list-different
配置相关选项
--find-config-path: 查找配置文件路径--config: 指定配置文件路径--no-config: 忽略配置文件--config-precedence: 控制配置优先级cli-override(默认): CLI 选项优先file-override: 配置文件优先prefer-file: 找到配置文件则忽略 CLI 选项
其他实用选项
--ignore-path: 指定忽略规则文件路径--no-editorconfig: 忽略 .editorconfig 文件--with-node-modules: 包含 node_modules 目录--log-level: 设置日志级别(error/warn/log/debug/silent)--stdin-filepath: 为 stdin 输入指定模拟文件路径--ignore-unknown: 忽略未知文件类型--no-error-on-unmatched-pattern: 模式不匹配时不报错
缓存机制
Prettier 提供了高效的缓存系统:
prettier . --write --cache
缓存策略:
--cache-strategy metadata(默认): 基于文件元数据--cache-strategy content: 基于文件内容
缓存位置:
- 默认:
./node_modules/.cache/prettier/.prettier-cache - 可通过
--cache-location自定义
注意:插件更新后建议手动清除缓存
最佳实践建议
- 在项目根目录创建
.prettierignore文件,明确指定需要忽略的文件/目录 - 将格式化选项保存在配置文件(如
.prettierrc)中,而不是通过 CLI 参数传递 - 在 CI 流程中使用
--check选项确保代码风格一致 - 考虑设置预提交钩子(pre-commit hook)自动格式化
- 大型项目启用缓存(
--cache)可显著提升性能
通过掌握这些 CLI 功能,你可以将 Prettier 无缝集成到各种开发工作流中,确保代码风格的一致性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



