团队建设
解决Vscode Delete `CR`问题
00 分钟
2022-9-4
2023-9-11
type
status
date
slug
summary
tags
category
icon
password

问题根源

导致这个问题,一般是Eslint或者Prettier配置冲突引起的。
 
由于历史原因,Window和linux下的文本文件的换行符是不一致的,Window换行时,使用了回车符CR(carriage-return character)和换行符LF(linefeed character),而Mac和Linux系统换行符,仅仅使用了换行符LF,所以ESlint和Prettier的配置文件在IDE会出现该问题,如图显示:
notion image
 
除此之外,老版本的Mac系统使用的回车符也有不同,使用了CR回车符,三者的主要区别:
Window
Linux/Mac
Old Mac(pre-OSX)
CR+LF
LF
CR
‘\n\r’
'\n’
‘\r’
因此,文本文件在不同系统下创建和使用时就会出现不兼容的问题。
项目仓库中默认是Linux环境下提交的代码,文件默认是以LF结尾的(工程化需要,统一标准)。
windows电脑git clone代码的时候,如果我的autocrlf(在windows下安装git,该选项默认为true)为true,那么文件每行会被自动转成以CRLF结尾,如果对文件不做任何修改,pre-commit执行eslint的时候就会提示你删除CR
 

解决方案

1、主要是针对Window系统,将全局autocrlf 设置为false ,Git全局配置后,需要重新拉取代码
 
2、在VSCode IDE可以通过一键切换处理,将CRLF切换成LF
notion image