#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.