process.node.env не определен в eslintrc.js

#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