問題根源:
罪魁禍首是git的一個配置屬性:core.autocrlf
由於歷史原因,windows下和linux下的文本文件的換行符不一致。
Windows在換行的時候,同時使用了回車符CR(carriage-return character)和換行符LF(linefeed character)- 而
Mac和Linux系統,僅僅使用了換行符LF - 老版本的
Mac系統使用的是回車符CR
因此,文本文件在不同系統下創建和使用時就會出現不兼容的問題。
git項目倉庫中默認是Linux環境下提交的代碼,文件默認是以LF結尾的(工程化需要,統一標准)。
用windows電腦git clone代碼的時候,若我的autocrlf(在windows下安裝git,該選項默認為true)為true,那么文件每行會被自動轉成以CRLF結尾,若對文件不做任何修改,pre-commit執行eslint的時候就會提示刪除CR。
現在可以理解ctrl+s和yarn run lint --fix方案為何可以修復eslint錯誤了吧,因為Git自動將CRLF轉換成了LF。
解決方法:
git config --global core.autocrlf false
git全局配置之后,重新拉取代碼
