ESLint: Запуск ESLint для одного правила с большим объектом правила

#javascript #reactjs #typescript #eslint

Вопрос:

Я пытаюсь запустить ESLint в своем проекте React только для того, чтобы проверить одно конкретное (например, max-len) правило, подобное этому:

 eslint . --ext .js,.jsx,.ts,.tsx --rule "{'max-len': ['error', { code: 120, ignoreComments: true, ignoreTrailingComments: true, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true, }]}"
 

Но результаты также показывают ошибки для других типов ошибок.

Вот мой .eslintrc.js файл:

 module.exports = {
  env: {
    browser: true,
    es2021: true,
  },
  extends: [
    'react-app',
    'airbnb',
    'plugin:react/recommended',
    'plugin:import/errors',
    'plugin:import/warnings',
    'plugin:import/typescript',
    'plugin:jsx-a11y/recommended',
  ],
  plugins: [
    'react',
    'jsx-a11y',
    '@typescript-eslint',
  ],
  // parser: 'babel-eslint',
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 2017,
    sourceType: 'module',
  },
  settings: {
    'import/resolver': {
      node: {
        extensions: ['.js', '.jsx', '.ts', '.tsx'],
      },
    },
  },
  rules: {
    'max-len': ['error', {
      code: 120,
      ignoreComments: true,
      ignoreTrailingComments: true,
      ignoreUrls: true,
      ignoreStrings: true,
      ignoreTemplateLiterals: true,
    }],
  },
};
 

Я также пытался запустить с игнорированием файла .eslintrc.js используя --no-eslintrc вот так:

 eslint . --ext .js,.jsx,.ts,.tsx --no-eslintrc --rule ....same-rule-above
 

На этот раз я получаю только одну ошибку max-len, а остальные-ошибки при анализе ключевого слова импорта:

 /Users/olcayertas/10n/src/util/helpers.ts
  1:1  error  Parsing error: The keyword 'import' is reserved

/Users/olcayertas/10n/src/util/routes.ts
  1:1  error  Parsing error: The keyword 'export' is reserved

/Users/olcayertas/10n/src/util/ui-helpers.ts
  1:1  error  Parsing error: The keyword 'import' is reserved

✖ 196 problems (196 errors, 0 warnings)
 

Как я могу запустить ESLint только для одного правила с объектом правила?

Комментарии:

1. Видеть eslint.org/docs/user-guide/command-line-interface#-rule

2. Что вы подразумеваете под «exp» (в первом предложении)?

Ответ №1:

Я нахожу проблему, и вот ответ. Поскольку наш проект использует TypeScript, нам нужна конфигурация eslintrc.js файла, поэтому использование --no-eslintrc не работает. Вместо этого мы отключили расширенные правила (а не плагины).:

 module.exports = {
  ...
  extends: [
    'plugin:import/errors',
    'plugin:import/warnings',
    'plugin:import/typescript',
    //'plugin:react/recommended',
    //'arbnb',
  ],
  rules: {
    'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],
    'import/prefer-default-export': 'off',
    'import/no-unresolved': ['error', { ignore: [ '.svg' ] } ],
    'import/extensions': [
      'error',
      'ignorePackages',
      {
        js: 'never',
        jsx: 'never',
        ts: 'never',
        tsx: 'never',
      },
    ],
  },
}
 

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

 eslint . --ext .js,.jsx,.ts,.tsx
 

И это работает идеально! Таким образом, мы можем добавлять правила шаг за шагом.

Комментарии:

1. Вероятно, проще создать «базовый» набор правил, который вы можете использовать для компоновки из командной строки, и ваш фактический файл конфигурации ESLint просто расширит базовый и другие предустановки.

Ответ №2:

Если вы хотите использовать файл .eslintrc для сохранения своей конфигурации (парсер, настройки плагина и т. Д.), Вы можете использовать eslint-nibble с --rule=max-len флагом. Это будет соответствовать вашей обычной конфигурации, но покажет вам только ошибки из этого правила и даст возможность исправить их, если правило можно исправить автоматически.

Отказ от ответственности: Я создатель eslint-nibble.