Хотя это неясно из документации Create-React-App , они приводят пример, как будто конфигурация ESLint проекта находилась внутри свойства eslintConfig
файла package.json
.
Вам просто нужно настроить ESLint, как описано в его документации . Поэтому, если вы go .eslintrc.json
, это должен быть действительный файл конфигурации ESLint, у которого нет свойства eslintConfig
.
В этом примере важны только следующие вещи:
- они расширяются от
"react-app"
до любой другой конфигурации - любое дополнительное правило установлено на
"warn"
, чтобы избежать остановки проекта из сборки - при использовании TypeScript Поместите указанную c TS-связанную конфигурацию в раздел
"overrides"
.
Простой .eslintrc.js
(обратите внимание на расширение) файл конфигурации для проекта CRA с использованием TypeScript может выглядеть следующим образом:
const defaultRules = [
'react-app',
'eslint:recommended',
// any other plugins or custom configuration you'd like to extend from.
];
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2017,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
env: {
browser: true,
node: true,
es6: true,
jest: true,
},
extends: defaultRules,
rules: {
'array-callback-return': 'warn',
'consistent-return': 'warn',
'default-case': 'warn',
// etc.
},
overrides: [
{
files: ['**/*.ts', '**/*.tsx'],
plugins: ['@typescript-eslint'],
extends: [
...defaultRules,
'plugin:@typescript-eslint/recommended',
// any other TypeScript specific config (from a plugin, or custom)
],
rules: {
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-unused-expressions': 'warn',
// etc.
},
},
],
settings: {
react: {
// React version. "detect" automatically picks the version you have installed.
version: 'detect',
},
},
};