Перевод строки и линтеры

159
19 января 2020, 02:40

Я слышал, что в 2019 году не модно собирать javascript-проекты без линтера, но вот я такой мамонт, только начинаю осваивать.

И что-то у меня не стыкуется в голове одно с другим. Основная ОС у меня - windows, переводы строки CRLF (допустим, в той же vscode). Гит поставленный по умолчанию предлагает core.autocrlf = true (т.е. файлы хранятся в CRLF на диске, а при уходе в репозиторий преобразуются в LF) - тынц ссылка на ru so, en so и по всему интернету рекомендуют именно эту настройку.

А как доходит дело до установки vue, то при vue init webpack файлы на диске оказываются все поголовно в LF - и это в принципе мне было незаметно, пока я не включил линтер, который тут же ругнулся множеством ошибок Expected linebreaks to be 'LF' but found 'CRLF'

http://eslint.org/docs/rules/linebreak-style  Expected linebreaks to be 'LF' but found 'CRLF'
  src\router\index.js:15:4
  });

И сиди жми Shift + Alt + F на всех тронутых файлах. А потом при создании нового файла не забудь поменять формат строк. А если сделал git rebase/reset, чтобы причесать коммиты - всё, начинай сначала.

Почему я не вижу вообще никаких следов этих обсуждений, как будто я первый продираюсь? Толи все поголовно врут, что настроили линтер ("и вы говорите"), толи настройка свелась к отключению надоедливых правил (тогда это не настройка, а профанация), толи все промолчали что и как настроили, так как это всем очевидно.

Но мне как-то не очень. Давайте попробую сформулировать вопрос. В какую сторону двигаться:

  • толи мода постепенно смещается в сторону "да, сидим под виндой, но используем LF"
  • толи двигаемся в сторону "на винде сидим на CRLF, на маках на LF"

Я допустим, могу понять первый (LF) вариант так. Для репозиториев указываем core.autocrlf = false, в vscode ставим files.eol = \n и работаем на win как на lin. Настройка конечно требуется, но разовая - зато дальше правила линтера одинаковые на всех машинах (lf), сборочных и тестовых серверах.

А второй (CRLF) вариант вроде как кажется более родным для win (настраивать git и vscode не требуется), но я в упор не понимаю, как тогда пользуются одним и тем же .eslintrc.js на разных машинах и на какую настройку равняться на сборочном сервере. Как-то методологически непонятно, есть ли смысл в проверке исходников на общие правила, если проверяются разные исходники разными калибрами? Ну разве что тупо отключить, если у всех в команде win.

Вроде как уже пора выбрать какое-то одно направление и идти дожимать оставшиеся неясными вопросы, но непонятно куда идти. Что сейчас в этом вопросе считается бест практис?

Answer 1

В общем, я подумал и решил пойти по пути LF:

  1. В файле .git\config добавил строки:

    [core]
    autocrlf = false

  2. В файле .vscode\settings.json добавил настройку

    "files.eol": "\n",

И на этом вроде всё. Один проект погоняю, набью шишки и может быть со временем поменяю своё мнение — что не надо было в эту сторону идти.

READ ALSO
Странное поведения реакта при overflow hidden

Странное поведения реакта при overflow hidden

Люди добрые помогите, уже уйму времени потратил на решение этой проблемы, но не могу понять почему происходит такое поведениеЭта плашка и если...

121
Как правильно находить класс и удалять его при отведении мыши

Как правильно находить класс и удалять его при отведении мыши

При нажатии на кнопку вылезает sidebar, при помощи добавления одному div внутри body переключает класс на context-sidebar-activeЯ хочу при отводе мыши от sidebar...

168
Проблема с @keyup

Проблема с @keyup

У меня есть компонент - https://pastebincom/CFDfbfab

133
Jquery не работает SlideToggle

Jquery не работает SlideToggle

Есть такой код

125