问题原因
项目中设置检查换行格式unix,git开启了自动转换(拉代码的时候把LF转为了CRLF)导致报错
// eslint中设置了 规定换行格式
'linebreak-style': [2, 'unix'],
回车换行符使用unix风格的,也就是LF。unix其实主要就是指mac,或者ubuntu这类的。本来团队都用Mac就没啥问题。但如果你用的是windows。就会有标题中的错误
解决方法
A 修改eslint配置
禁用windows检测
.editorconfig不做限制,通过git CRLF 和 LF转换,关闭windows检测
linebreak-style': ["off", "windows"]
B 修改编辑器
如果按照这种改法,git转换也要关掉,再搭配.editorconfig限制lf使用
其他
git CRLF 和 LF转换
windows
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF
# 查看 core.autocrlf配置,一般默认为true
git config core.autocrlf
git config --global core.autocrlf
# 设置配置
git config --global core.autocrlf true
# Configure Git on Windows to properly handle line endings
Linux/UNIX、OS X
在Linux/UNIX、OS X系统以及库中保留LF
作为换行符。
$ git config --global core.autocrlf input
# Configure Git on OS X or Linux to properly handle line endings
不同系统之间的换行符
CR:表示回车\r
LF:表示换行\n
CRLF:表示回车换行\r\n
敲下回车键,不同的操作系统保存到文件中的值:
Windows:使用的是CRLF ==> 即\r\n,文件中保存的是\r\n
Linux/Unix: 使用的是LF ==> 即\n,文件中保存的是\n
Mac OS: 使用的是CR ==> 即\r,文件中保存的是\r
Mac OS X系统:使用的是LF ==> 即\n,文件中保存的是\n(Mac OS X已经改成和Unix/Linx一样使用LF)
.editorconfig编辑器配置
.editorconfig的自定义文件。该文件用来定义项目的编码规范,编辑器的行为会与.editorconfig 文件中定义的一致,并且其优先级比编辑器自身的设置要高,这在多人合作开发项目时十分有用而且必要
有些编辑器默认支持editorConfig,如webstorm;而有些编辑器则需要安装editorConfig插件,如ATOM、Sublime、VS Code等
webstorm需要启用
# 匹配全部文件
[*]
[*.{js,jsx,ts,tsx,vue}]
# http://editorconfig.org
root = true # 根目录的配置文件,编辑器会由当前目录向上查找,如果找到 `roor = true` 的文件,则不再查找
[*]
indent_style = space # 空格缩进,可选"space"、"tab"
indent_size = 4 # 缩进空格为4个
end_of_line = lf # 结尾换行符,可选"lf"、"cr"、"crlf"
charset = utf-8 # 文件编码是 utf-8
trim_trailing_whitespace = true # 不保留行末的空格
insert_final_newline = true # 文件末尾添加一个空行
curly_bracket_next_line = false # 大括号不另起一行
spaces_around_operators = true # 运算符两遍都有空格
indent_brace_style = 1tbs # 条件语句格式是 1tbs
[*.js] # 对所有的 js 文件生效
quote_type = single # 字符串使用单引号
[*.{html,less,css,json}] # 对所有 html, less, css, json 文件生效
quote_type = double # 字符串使用双引号
[package.json] # 对 package.json 生效
indent_size = 2 # 使用2个空格缩进