Delete `␍`eslint(prettier/prettier)错误
今天提交代码的时候,控制台报的错误就有点吓人,一下子所有文件都有问题,吓死宝宝了,不要慌,接下来我们来解决这个问题吧
解决方案:
方案一:一个一个文件的选择,具体操作如下,手动把 CRLF 换成 LF。缺点:文件太多,换不过来,太鸡肋。
方案二:yarn run lint --fix
比上面省事,eslint错误消失,但暂存区多了 n 个文件改动记录,对比 Working tree 也没发现任何不同。
参考资料:“error Delete ⏎ prettier/prettier” in .vue files’’
缺点:需要 commit 所有文件,多余。反正我用npm run lint --fix
这个方法没有成功,报错了。
值得一提的是,先打开 package.json, 在 script,中间插入 –fix,运行此命令才不会报错
修改如下图所示
三、配置. prettierrc 文件
在项目根目录下的. prettierrc 文件中写入即可。其实就是不让 prettier 检测文件每行结束的格式.
1 |
|
缺点:不能兼容跨平台开发,从前端工程化上讲没有做到尽善尽美。
我直接加了这行代码解决问题的
参考资料:Why do I keep getting Delete ‘cr’ [prettier/prettier]?
四、最佳方案
问题根源:
罪魁祸首是 git 的一个配置属性:core.autocrlf
由于历史原因,windows 下和 linux 下的文本文件的换行符不一致。
Windows 在换行的时候,同时使用了回车符 CR(carriage-return character) 和换行符 LF(linefeed character)
而 Mac 和 Linux 系统,仅仅使用了换行符 LF
老版本的 Mac 系统使用的是回车符 CR
Windows | Linux/Mac | Old Mac(pre-OSX) |
---|---|---|
CRLF | LF | CR |
‘\n\r’ | ‘\n’ | ‘\r’ |
因此,文本文件在不同系统下创建和使用时就会出现不兼容的问题。
我的项目仓库中默认是 Linux 环境下提交的代码,文件默认是以 LF 结尾的 (工程化需要,统一标准)。
当我用 windows 电脑 git clone 代码的时候,若我的 autocrlf(在 windows 下安装 git,该选项默认为 true) 为 true,那么文件每行会被自动转成以 CRLF 结尾,若对文件不做任何修改,pre-commit 执行 eslint 的时候就会提示你删除 CR。
现在可以理解ctrl+s
和yarn run lint --fix
方案为何可以修复 eslint 错误了吧,因为 Git 自动将 CRLF 转换成了 LF。
最佳实践:
现在 VScode,Notepad++ 编辑器都能够自动识别文件的换行符是 LF 还是 CRLF。
如果你用的是 windows,文件编码是 UTF-8 且包含中文,最好全局将autocrlf
设置为false
。
1 |
|
注意:git 全局配置之后,你需要重新拉取代码。
https://blog.csdn.net/qq_27674439/article/details/111408453
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!