2016-06-18 4 views
2

Вот мотивирующим пример: Я разрабатываю код и хотите, чтобы выяснить, что происходит не так, поэтому яСоздание различных правил eslint для местного развития

function foo() { 
    console.log("Look its 2016 and I'm still printf debugging"); 
} 

За исключением ... наш процесс сборки проходит esLint как часть системы сборки и побочного проектирования предотвращает даже запуск остальной части конвейера сборки, если esLint не работает. error Unexpected console statement no-console

То, что я хочу, это эффективно, чтобы создать среду, в которой dev определенные правила выключены (или преобразованы в предупреждения), а затем production среды со строгими правилами включения. И я хочу, чтобы иметь возможность легко переключать это локально, поэтому я могу проверить, работает ли мой код, прежде чем отправлять его на сервер CI.

Я не могу найти соответствующие фрагменты кода, чтобы это произошло, что меня огорчает. Моя среда сборки - это всего лишь npm скриптов (только с использованием esLint CLI + package.json), но я был бы рад передать решение из другой среды сборки.

Прямо сейчас, у меня осталось либо // eslint-disable-line, либо локально модифицировать файл .eslintrc и молиться. Я никогда случайно не проверял это случайно. Должен быть лучший способ.

ответ

1

Почему бы не использовать крюк с фиксацией, где ваш код проверяется до того, как произойдет какое-либо совершение. Вы всегда можете отключить любое правило, которое вы хотите, используя комментарий, если локально или использовать файл .eslintrc.

Посмотрите на https://github.com/jhurliman/precommit-hook для получения дополнительной информации. Я честно считаю, что все это должно быть зависимой от развития. В твоей продукции не должно быть никаких пучков.

Наконец-то я добавлю некоторую задачу бегуна, как хрюканье или глоток, таким образом вы сможете запускать свои ворсинки, модульные тесты и любые другие проверки здравомыслия, необходимые для вашего кода.

+0

Крючок для предварительной фиксации тяжелый, потому что его нелегко оттолкнуть на отдельную машину без каких-либо крючков cp .git/hooks. Я предпочел бы просто добавить сценарий оболочки, который имел .eslintrcdev и .eslintrcprod и скопировал один или другой в .eslintrc по мере необходимости. Я бы хотел избежать политической дискуссии о бегунах. Просто, чтобы уточнить, если это было неправильно понято: мы * * используем бегун задачи make + npm + node по мере необходимости. – AnilRedshift

+0

Я думаю, что я в идеале хочу сделать что-то вроде возможности запускать 'eslint --env dev ...' или 'eslint --dev prod' (который поддерживается сегодня), но затем есть правила в моем eslintrc, которые выглядят что-то вроде этого 'dev/no-console: ['off']', который не поддерживается. Независимо от того, есть ли у кого-то разумный способ решения этого вопроса, я посмотрю, смогу ли я получить эту функцию в eslint. – AnilRedshift

2

Из родственного резьбы на GitHub: https://github.com/eslint/eslint/issues/6460#issuecomment-226967834

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

Смежные вопросы