前言
项目中可能出现这么一种情况,A提交的代码,B使用Git拉下来之后都是ESlint报的警告。
问题原因
各开发平台的换行符不一致,Win平台会出问题。
在各操作系统下,文本文件所使用的换行符是不一样的。
UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。
DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。
Git提供了一个“换行符自动转换”功能。
这个功能默认处于“自动模式”,当你在pull文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);
当你在提交文件时,它又试图将 CRLF 替换为 LF。
Git 的“换行符自动转换”功能听起来似乎很智能、很贴心,因为它试图一方面保持仓库内文件的一致性(UNIX 风格),一方面又保证本地文件的兼容性(Windows 风格)。
但遗憾的是,这个功能是有 bug 的,而且在短期内都不太可能会修正。
那么导致换行符不一致的原因就有可能是如下:
- 开发工具的默认换行符不一致
- GIT更换了换行符
所以我们要做的是
- 禁用Git的换行符转换
- 设置开发工具的换行符
- ESlint忽略不同的换行符
GIT设置
禁用GIT的自动修改换行符功能:
方式1
在本地路径C:\Users\[用户名]\.gitconfig
下修改git配置[core]
,如果没有就直接添加上去:
1 | [core] |
方式2(推荐)
git bash命令行也可以修改,最终也是修改.gitconfig配置文件:
1 | git config --global core.autocrlf false |
含义:
AutoCRLF
1 | # 提交时转换为LF,检出时转换为CRLF |
SafeCRLF
1 | # 拒绝提交包含混合换行符的文件 |
IDE设置使用UNIX换行符
方式1
IDEA的设置File => Settings =>Editor => Code Style
Line separator (for new lines)
,选择:Unix and OS X (\n)
对已使用Windows换行符的文件,可以使用Sublime Text打开,
View->Line Endings,选Unix,保存;
方式2(推荐)
项目根目录添加.editorconfig
文件,并输入如下:
1 | [*.{js,jsx,ts,tsx,vue}] |
推荐这种
EditorConfig帮助开发人员在不同的编辑器和IDE之间定义和维护一致的编码样式。EditorConfig文件易于阅读,并且与版本控制系统配合使用。
ESLint配置
.eslintrc.js
配置
1 | module.exports = { |
规则
0 或 'off'
: 关闭规则。1 或 'warn'
: 打开规则,并且作为一个警告,字体颜色为黄色(并不会导致检查不通过)。2 或 'error'
:打开规则,并且作为一个错误 ,色体颜色为红色(退出码为1,检查不通过)。