#reactjs #eslint
#reactjs #eslint
Вопрос:
Мне нужны некоторые правила компоновки, чтобы выдавать либо ошибку, либо предупреждение в зависимости от того, является ли сборка разработкой или производством. В файле компонента React во время разработки process.env.NODE_ENV
=== 'development'
.
В eslintrc.js У меня есть:
const production = process.env.NODE_ENV !== 'development'; // returns true
console.log('%c process.env.NODE_ENV', 'color: green;', process.env.NODE_ENV); // returns undefined
Я хочу иметь возможность переключаться между предупреждениями о правилах компоновки. и подобные ошибки:
rules: {
'no-tabs': 0,
indent: [2, 'tab', { SwitchCase: 1, VariableDeclarator: 1 }],
'react/jsx-props-no-spreading': 'off',
'no-unused-vars':
production
? 'error'
: 'warn',
Почему process.env.NODE_ENV
не определено и как я могу это исправить?
Комментарии:
1. Я бы предположил, что любые переменные среды будут не определены во время статического анализа в вашей IDE, поскольку код фактически не выполняется в среде.
Ответ №1:
Поскольку он не определен во время статического анализа, вы всегда можете сделать что-то вроде этого:
'no-console': (() => {
if (typeof process.env.NODE_ENV === 'undefined') {
return 'off';
}
if (process.env.NODE_ENV === 'development') {
return 'off';
}
return 'error';
})(),
Комментарии:
1. Я изо всех сил пытался установить правило только для разработки, и это работает для меня! Большое вам спасибо!
Ответ №2:
Вы можете подумать о том, чтобы просто иметь несколько файлов конфигурации для eslint вместо того, чтобы пытаться обрабатывать изменения среды в одном файле.
Согласно документам: https://eslint.org/docs/user-guide/command-line-interface#basic-configuration
Вы можете просто вызвать eslint с флагами -c
или --config
и передать дополнительный конфигурационный файл. Это объединит базовый конфигурационный файл с файлом, переданным во флаге
Пример для двух скриптов lint:
eslint --config ./dev-config.js **/*.js
eslint --config ./prod-config.js **/*.js