Удалить `␍`eslint(красивее/красивее) неправильное решение

ESLint

фон проблемы

существуетWindowsПосле извлечения нового кода из ноутбука он выполняетсяpre-commit, возникает следующая ошибка:

Delete `␍`eslint(prettier/prettier) 

Вот несколько решений, которые я лично пробовал:

решение

1. Ctrl+S, чтобы сохранить файл

согласно сCrtl+SСохраните текущий файл ошибки,eslintОшибка исчезает, ноGitВо временном хранилище больше записей об изменении файлов, сравнитеWorking treeРазницы не нашел.

Недостаток: нельзя сохранить все файлы один за другим, хлопотно иcommit, избыточный.

2. ворс пряжи --fix

Легче, чем выше,eslintОшибка исчезает, но в области временного хранения появляется больше n записей об изменении файлов, сравнитеWorking treeРазницы тоже не нашел.

Недостаток: нужноcommitВсе файлы избыточны.

Ссылка: «ошибка Удалить ⏎ красивее/красивее» в файлах .vue``

3. Настройте файл .Prettierrc

в корневом каталоге проекта.prettierrcможно записать в файл. В самом деле, не позволяйтеprettierОпределяет формат в конце каждой строки файла.

"endOfLine": "auto" 

Недостатки: он не совместим с кросс-платформенной разработкой и не идеален с точки зрения фронтенд-инжиниринга.

Ссылка: Почему я продолжаю получать Удалить ‘cr’ [красивее/красивее]?

4. Переключение в один клик через IDE

微信截图_20210312173232.png

Это метод, предоставляемый Nuggets в области комментариев. Как правило, строка состояния в нижней части IDE предоставляет инструмент для «переключения последовательности окончания строки». Как показано на рисунке выше, вы можете переключиться на правильный последовательность окончания строки одним щелчком мыши.

Недостатки: Восстановить можно только текущий файл, и проблема сообщения об ошибках всего проекта не решается.

5. Лучшее решение

Корень проблемы:

ВиновникgitСвойство конфигурации:core.autocrlf

По историческим причинам,windowsСяхэlinuxСимволы новой строки в текстовом файле ниже несовместимы.

* Windows在换行的时候,同时使用了回车符CR(carriage-return character)和换行符LF(linefeed character) 

* 而Mac和Linux系统,仅仅使用了换行符LF 

* 老版本的Mac系统使用的是回车符CR 
Windows Linux/Mac Old Mac(pre-OSX
CRLF LF CR
'\n\r' '\n' '\r'

Поэтому проблемы несовместимости возникают, когда текстовые файлы создаются и используются в разных системах.

По умолчанию в моем репозитории проекта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.

Лучшие практики:

СейчасVScode,Notepad++Редакторы могут автоматически распознавать символ новой строки в файле.LFещеCRLF. если вы используетеwindows, кодировка файлаUTF-8и содержит китайский язык, лучше всего использовать глобальныйautocrlfУстановить какfalse.


git config --global core.autocrlf false

Уведомление:gitПосле глобальной настройки нужно перетянуть код.

Суммировать

Я нашел много информации,stackoverflow,githubЕсть соответствующие обсуждения и решения этой проблемы, но ни одно из них не может задеть за душу. Я написал эту статью, чтобы иметь возможность прочитать ее в будущем.Если она будет полезна друзьям, попавшим в беду, автору она никогда не надоест!