木灵鱼儿

木灵鱼儿

阅读:1567

最后更新:2022/01/19/ 11:26:50

不同平台的回车处理 warning Delete `␍` prettier prettier

windows和linux平台,他们之间的换行符是不一样的,mac之前也不一样,后来和linux保持统一。

  1. windows是CRLF,也就是\r\n
  2. linux是LF,也就是\n

两个平台之间换行符不一样,在有代码规范要求的情况下,很容易就会触发报错,如eslint的报错:warning Delete ␍ prettier/prettier

解决办法

假设我们代码规范要求换行是LF;那我们需要进行以下配置:

  1. git提交时自动格式化换行符

这个做法是防止有人本地编辑的时候没有改为LF的换行方式然后上传,导致别人拉库下来会运行报错。

在项目根目录创建:.gitattributes 文件

文件内写入:

# LF为小写的lf,CRLF为小写的crlf
* text eol=lf

这个就表示上传时会自动格式化换行符

当然也可以指定某个格式的文件是这个

.js text eol=lf

如果没有自动转,你需要开启一下git的这个功能

git bash 输入:

git config --global core.autocrlf input

这句话的意思是提交时转为LF,拉下来时不自动转为CRLF

当然还有很多设置,具体看这个链接:《git 换行符LF与CRLF转换问题 IDE的默认换行符设置为LF》

当然,仅仅配置这个是没用的,如果他开启了代码检测,那么你修改的时候,换行符还是CRLF,改动文件后还是会报错,所以我们还需要调整一下编辑器。

  1. 调整编辑器的默认换行符

以vscode为例,直接在编辑器最底下点击即可切换

切换好后再修改,就行了,这样上传代码和即时编辑都是根据代码规范来得。

当然,如果你的代码规范是CRLF,你也可以根据上面自己调整一下就行了。

  1. 补充.gitattributes

虽然我们设置了* text eol=lf;但是这会产生一个问题,他会把图片资源或者其他二进制资源的回车也给格式化了,这就导致资源文件的破坏,当然它的转换只会转换设置之后的文件,旧的之前的文件并不会被自动转换。

为了不影响文件,我们还需要添加以下内容:

# Define binary file attributes.
# - Do not treat them as text.
# - Include binary diff in patches instead of "binary files differ."
*.eot     -text diff
*.exe     -text diff
*.gif     -text diff
*.gz      -text diff
*.ico     -text diff
*.jpeg    -text diff
*.jpg     -text diff
*.otf     -text diff
*.phar    -text diff
*.png     -text diff
*.svgz    -text diff
*.ttf     -text diff
*.woff    -text diff
*.woff2   -text diff

-text diff再git中明确表示这个文件不被行尾跟踪和转换。

当然还有人使用这种写法:

*.png   binary

binary表示这是二进制文件不应修改。

更多内容可以参考国外stackoverflow网站的: Force LF eol in git repo and working copy

提交时提示非代码文件换行错误

个人猜测原因是因为我们git虽然设置了core.autocrlf input自动在提交时转换尾换行符,但是资源文件,他也是一种代码形式,它的换行可能不符合要求,于是报出警告。

解决方式:

git config --global core.safecrlf warn #发现CRLF是警告并继续

这样设置就行了

另一种做法

如果不想配置.gitattributes,那么就让vscode的换行符改为指定的格式,然后关闭git的自动转换

git config --global core.autocrlf false

某一个文件换行符不对的格式化方法

git的换行符转换的配置只适合新文件,旧文件不合适,如果打开了旧文件,你会发现还是CRLF格式,此时在vue cli启动的情况下触发保存,那么就会提示warning Delete ␍ prettier prettier的报错。

解决办法也很简单,你再vscode的右下角可以发现,尾换行变成了CRLF

我们把它给为LF;就会发现文件被修改了,其实就是被格式化了尾换行符,这样我再保存一下文件,就不会再报这个错误了。

版权申明

本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

关于作者

站点职位 博主
获得点赞 31
文章被阅读 1567

相关文章