解决Delete `␍`eslint(prettier/prettier)问题

1,685 阅读2分钟

从0搭建vue3,并配置项目规范

刚从 git 上拉取的代码,运行后直接报一大堆警告,全部在文件每行的末尾报红,提示 Delete eslint(prettier/prettier)。项目中都已经配置好了 prettiereslint 统一的检测工具,怎么还会出现这种问题? 下面介绍下解决方案以及出现这种问题的原因。

方案一: 根据提示进行修改(不推荐)

通过提示进行修改文件,或者通过命令全局修改,

npm run lint --fix

这样会将所有的文件全都修改,那么提交代码后,别的同事在更新代码,又会出现问题,所有这种方法是不可行的。

方案二: 在.prettierrc文件中添加配置

.prettierrc文件中直接添加如下代码:

{
  // ...
  "endOfLine": "auto"
}

"endOfLine": "auto":不让prettier检测文件每行结束的格式

方案三: 修改 git 的配置 (最佳解决方案)

出现这个问题的原因:windows下和linux下的文本文件的换行符不一致。

  • windowsCRLF(表示句尾使用回车换行两个字符,即windows下的"\r\n"换行)

  • LinuxLF(表示句尾,只使用换行,即末尾是"\n")

  • macCR(表示只使用回车,即末尾是"\r")

windows 电脑 git clone 代码的时候,autocrlf 选项默认为 true,克隆下来的文件每行会被自动转成以CRLF 结尾,若对文件不做任何修改,commit 执行 eslint 的时候就会提示你删除 CR

因此最根本的办法就是对gitautocrlf配置属性进行修改,这样我们就不需要改动代码了:

git config --global core.autocrlf false

执行此命令后,若无效,可重启vscode,或者重新拉取代码,就完美解决了

git core.autocrlf 配置说明

core.autocrlfgit中负责处理line ending的变量,可以设置3个值:truefalseinput

Windows平台上,core.autocrlf 默认是true,可以通过命令查看。

git config --list
  • 设置true时,在拉取代码换行(LF)会被转换成回车和换行(CRLF)。
  • 设置false时 提交和拉取都将不做转换操作,保留原有版本。
  • 设置input时,提交会把回车和换行转(CRLF)换成换行(LF),拉取时不转换。