最近开发的的时候,打开项目文件经常会出现爆红错误提示信息,显示如下图:
这东西太烦人了,毕竟谁都不希望在遍地都是爆红的代码里写东西,就像能解决这个问题,根据提示可以知道这是vscode
中使用的prettier
插件导致的,prettier
插件常被用在vscode
的代码格式化上,于是乎临时就想到了两种思路来解决这个问题:
- 解决格式问题:根据
prettier
要求修改格式 - 过滤格式问题:修改
prettier
格式要求
解决格式问题
解决问题之前先来了解下问题产生的原因,这是由于不同操作系统上使用的换行符不一致,在 Windows
操作系统中使用的换行符通常是回车换行符 \r\n (CRLF)
,而Linux
和Unix
使用简单换行 符 \n (LF)
。prettier
为了保证环境的一致性所设置的配置。我们要是像保持这项规则,也很简单,将文件的CRLF
切换为LF
就可以。
1、单文件切换
VSCODE
底部提供一个行尾序列切换的功能,直接切换就行,但这种方法有个问题就是,单次只能切换一个文件,操作比较费事。
2、git配置
git
有一个autocrlf
配置功能,我们可以通过如下配置:
git config --global core.autocrlf false
它的作用是告诉Git
在检出代码时不要自动将行尾转换为CRLF
(Windows风格的换行符),而是保留原来的LF
(Unix风格的换行符)。取值类型如下:
true
:在检出代码时自动将行尾转换为CRLF
,在提交代码时自动将行尾转换为LF。
input
:在检出代码时不自动转换行尾,在提交代码时自动将行尾转换为LF
。false
:在检出和提交代码时都不自动转换行尾。
由于git
安装默认会将 core.autocrlf
设置为true
,这样就会导致当我们使用clone
将代码拉下来后换行符自动由LF
转为CRLF
,我们只需要将这个配置关掉,然后重写通过clone拉下来换行符就不会变为CRLF
了(由于上传的时候会自动转为LF所以也不用担心仓库的行尾序列类型)。
过滤格式问题
上面的方式是通过修改格式来适配prettier
,但换个思路我们也可以反其道而行,若实在是不喜欢这种方式,不考虑系统换行符的兼容问题,我们也可以直接考虑修改prettier
或者eslint
的配置信息彻底解决换行符问题【有关prettier
和eslint
的关系请参考prettier/prettier】。
直接打开VSCODE
的设置搜索prettier
,修改prettier
设置如下:
将end of line
修改为auto
即可: