胖蔡说技术
随便扯扯

Vscode中的行尾序列CRLF/LF不兼容问题

最近开发的的时候,打开项目文件经常会出现爆红错误提示信息,显示如下图:

这东西太烦人了,毕竟谁都不希望在遍地都是爆红的代码里写东西,就像能解决这个问题,根据提示可以知道这是vscode中使用的prettier插件导致的,prettier插件常被用在vscode的代码格式化上,于是乎临时就想到了两种思路来解决这个问题:

  • 解决格式问题:根据prettier要求修改格式
  • 过滤格式问题:修改prettier格式要求

解决格式问题

解决问题之前先来了解下问题产生的原因,这是由于不同操作系统上使用的换行符不一致,在 Windows 操作系统中使用的换行符通常是回车换行符 \r\n (CRLF),而LinuxUnix使用简单换行 符 \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的配置信息彻底解决换行符问题【有关prettiereslint的关系请参考prettier/prettier】。

直接打开VSCODE的设置搜索prettier,修改prettier设置如下:

end of line修改为auto即可:

赞(1) 打赏
转载请附上原文出处链接:胖蔡说技术 » Vscode中的行尾序列CRLF/LF不兼容问题
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏