命令拆解与核心作用
npx prettier --write . --end-of-line lf 是一条用于格式化代码 的命令,核心作用是:通过 Prettier(主流的代码格式化工具)自动格式化当前目录及所有子目录下的代码文件,并强制将文件的换行符统一为 LF(Line Feed,换行)格式。
逐部分解析
1. npx
- 是 npm 5.2+ 内置的包执行工具,无需全局安装 Prettier,直接从 npm 仓库临时下载(或使用本地已安装的)Prettier 并执行。
- 优势:避免全局安装的版本冲突,确保使用项目本地(
node_modules)或最新兼容版本的 Prettier。
2. prettier
- 核心工具:Prettier 是一个"有主见的"代码格式化工具,支持 JavaScript/TypeScript、CSS/LESS/SCSS、HTML、JSON、Markdown 等几乎所有前端主流文件格式,能统一团队代码风格。
3. --write .
--write:核心参数,意为"写入格式化后的内容到文件"(而非仅在终端预览格式化结果)。.:指定格式化的目标路径为当前目录 (包含所有子目录),也可指定具体文件/目录(如--write src/仅格式化 src 目录)。- 对比:若省略
--write,Prettier 仅会在终端输出格式化后的代码,不会修改原文件。
- 对比:若省略
4. --end-of-line lf
--end-of-line:指定文件的换行符格式,强制覆盖 Prettier 配置文件(如.prettierrc)中的endOfLine配置。lf:换行符类型为 LF (Unix/Linux/macOS 系统默认换行符),可选值还有:crlf:回车+换行(Windows 系统默认);cr:仅回车(极少使用);auto:根据系统自动适配(不推荐团队协作使用,易导致换行符不一致)。
核心使用场景
- 统一团队换行符规范 :
跨系统开发时(Windows + macOS/Linux),不同系统默认换行符不同,强制lf可避免 Git 提交时因换行符差异产生的"无意义修改"(如文件全量标红)。 - 批量格式化代码 :
首次接入 Prettier 时,一键格式化整个项目的所有文件,快速统一代码风格。 - 临时覆盖配置 :
若项目.prettierrc中配置的endOfLine不符合需求(如配置为auto),可通过该命令临时强制使用lf,无需修改配置文件。
补充说明
- 忽略文件 :
Prettier 会自动读取项目中的.prettierignore文件(语法同.gitignore),忽略指定文件/目录(如node_modules/、dist/),不会格式化这些内容。 - 优先级 :
命令行参数(如--end-of-line lf)的优先级高于 Prettier 配置文件(.prettierrc/package.json中的prettier字段)。 - 常见问题 :
- Windows 系统执行后换行符仍为
CRLF:需确保 Git 配置core.autocrlf=false(避免 Git 自动转换换行符); - 部分文件未格式化:检查
.prettierignore是否包含该文件,或 Prettier 是否支持该文件类型(可通过prettier --list-different .查看未格式化的文件)。
- Windows 系统执行后换行符仍为
简化/扩展用法
- 仅检查未格式化的文件(不修改):
npx prettier --check . --end-of-line lf - 仅格式化指定类型文件:
npx prettier --write "src/**/*.js" --end-of-line lf - 结合配置文件(推荐):在
.prettierrc中配置"endOfLine": "lf",后续只需执行npx prettier --write .即可。