You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Windows下prettier --write替换LF为CRLF且endOfLine配置不生效问题

Windows环境下Prettier固定LF换行符配置方案

你配置的"endOfLine": "lf"参数不生效,基本都是Git自动换行转换、其他配置优先级覆盖两个原因导致的,按以下步骤操作即可解决:

1. 锁死Git换行规则,避免checkout阶段自动转CRLF

Windows版Git默认开启core.autocrlf=true,会在拉取代码时自动把仓库内的LF文件转为CRLF存到本地工作区,是这类问题最常见的诱因。

仓库级统一规则(推荐,对所有团队成员生效)

在项目根目录新建.gitattributes文件提交到代码库,该配置优先级高于所有用户本地Git设置,不会因为个人环境差异失效:

# 所有文本文件默认使用LF换行
* text=auto eol=lf
# Windows批处理脚本保留CRLF,避免执行异常
*.bat text eol=crlf
*.cmd text eol=crlf

提交后所有团队成员拉取最新代码,在项目根目录执行以下命令重置本地工作区文件,清除之前被错误转换的CRLF文件:

git rm --cached -r .
git reset --hard HEAD

本地Git配置兜底

Windows用户单独执行以下命令,关闭当前仓库的自动换行转换:

git config core.autocrlf false
git config core.eol lf

2. 排查Prettier配置优先级冲突

  • 检查项目根目录是否存在.editorconfig文件,如果文件内配置了end_of_line = crlf,Prettier默认会优先读取该配置覆盖自身规则。可以直接把该行修改为end_of_line = lf,或者在.prettierrc中添加"useEditorConfig": false关闭Prettier对EditorConfig的读取。
  • 检查是否存在全局Prettier配置冲突:包括Windows用户目录下的全局.prettierrc、VSCode Prettier插件的全局设置,如果全局配置指定了endOfLine: "crlf"或endOfLine: "auto",会干扰项目级配置生效。可以直接在项目的.vscode/settings.json中写入以下配置,强制工作区内的Prettier插件使用项目规则:
    {
      "prettier.endOfLine": "lf",
      "prettier.useEditorConfig": false
    }
    
  • 确认本地Prettier版本≥2.0.0,2.0以下版本对endOfLine参数的处理存在已知bug,直接升级到稳定版即可。

3. 验证效果

配置完成后执行prettier --write格式化任意文件,可通过编辑器右下角的换行符标识,或在Git Bash/WSL中执行file 目标文件路径查看文件换行格式,返回with LF line terminators即为配置生效。

注意:不要使用Windows老版本自带记事本编辑项目文件,该类记事本保存时会强制将换行符转为CRLF,破坏规则。

内容的提问来源于stack exchange,提问作者Leo Lobeto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:15:35