`npx prettier --write . --end-of-line lf` 是一条用于**格式化代码**的命令

命令拆解与核心作用

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:根据系统自动适配(不推荐团队协作使用,易导致换行符不一致)。

核心使用场景

  1. 统一团队换行符规范 :
    跨系统开发时(Windows + macOS/Linux),不同系统默认换行符不同,强制 lf 可避免 Git 提交时因换行符差异产生的"无意义修改"(如文件全量标红)。
  2. 批量格式化代码 :
    首次接入 Prettier 时,一键格式化整个项目的所有文件,快速统一代码风格。
  3. 临时覆盖配置 :
    若项目 .prettierrc 中配置的 endOfLine 不符合需求(如配置为 auto),可通过该命令临时强制使用 lf,无需修改配置文件。

补充说明

  1. 忽略文件 :
    Prettier 会自动读取项目中的 .prettierignore 文件(语法同 .gitignore),忽略指定文件/目录(如 node_modules/、dist/),不会格式化这些内容。
  2. 优先级 :
    命令行参数(如 --end-of-line lf)的优先级高于 Prettier 配置文件(.prettierrc/package.json 中的 prettier 字段)。
  3. 常见问题 :
    • Windows 系统执行后换行符仍为 CRLF:需确保 Git 配置 core.autocrlf=false(避免 Git 自动转换换行符);
    • 部分文件未格式化:检查 .prettierignore 是否包含该文件,或 Prettier 是否支持该文件类型(可通过 prettier --list-different . 查看未格式化的文件)。

简化/扩展用法

  • 仅检查未格式化的文件(不修改):npx prettier --check . --end-of-line lf
  • 仅格式化指定类型文件:npx prettier --write "src/**/*.js" --end-of-line lf
  • 结合配置文件(推荐):在 .prettierrc 中配置 "endOfLine": "lf",后续只需执行 npx prettier --write . 即可。
相关推荐
liangshanbo121511 分钟前
React Fiber:从“解决卡顿”到完整更新链路
前端·javascript·react.js
Timmy19 分钟前
前端转全栈笔记:讲框架之前,先把 TypeScript 这关过了
前端·人工智能·node.js
计算机魔术师24 分钟前
年收入650亿、亏420亿,Anthropic凭什么敢叫价万亿?
前端
Frag0ut25 分钟前
Chrome Canary 最新实验功能:AI Mode、按设备筛选历史记录与 Gemini 自动改密
前端·人工智能·chrome·dev·beta·canary·最新实验功能
anew___37 分钟前
《从零手写操作系统 (19):Ext2文件系统实战——从内存到磁盘的跨越》
java·服务器·前端·数据库·算法
吴声子夜歌1 小时前
Nginx应用与运维——Nginx Web服务应用实战(HTTPS安全服务器的搭建)
运维·前端·nginx
liangshanbo12151 小时前
Monorepo 工程化面试题:如何设计 Web + Node.js 中间层 + Shared + Scripts 的 Monorepo?
前端·node.js
IT_陈寒1 小时前
Redis集群切换主节点时,服务竟然全员掉线
前端·人工智能·后端
wangbing11251 小时前
开发指南147-WebSocket-前端
前端·websocket·网络协议
吴声子夜歌1 小时前
Nginx应用与运维——Nginx Web服务应用实战(伪流媒体服务器的搭建)
运维·前端·nginx