Справка по Eslint / Tslint Config (исключая файлы) - PullRequest
0 голосов
/ 24 марта 2020

Недавно в нашем проекте мы перешли на использование @typescript-eslint/parser для медленной миграции из tslint. В основном все было гладко, но у меня есть небольшая проблема / вопрос, который я не могу решить.

Нужно ли указывать игнорирование файлов / шаблонов в массиве исключений tsconfig, а также в ignorePatterns на .eslintrc объекте экспорта? В чем разница?

У нас есть файл сообщений. js в нашей директории src/lang, который я пытаюсь игнорировать, но в настоящее время выдает ошибку lint в нашей ловушке перед фиксацией, что заставляет меня задуматься об этом вопросе и о том, как эти две установки работают вместе.

Parsing error: "parserOptions.project" has been set for '@typescript-eslint/parser' The file does not match your project config: src/lang/messages.js. The file must be included in at least one of the projects provided

Я думаю, что мое понимание этих взаимосвязей не так, как при запуске eslint, я думал, что parserOptions подхватит проект правила из tsconfig, где исключены файлы js.

В настоящее время разделы, о которых я говорю в нашем eslintr c, выглядят так:

module.exports = {
    parser: '@typescript-eslint/parser',
    parserOptions: {
        project: path.resolve(__dirname, './tsconfig.json'),
        tsconfigRootDir: __dirname,
        useJSXTextNode: true,
        sourceType: 'module',
        ecmaFeatures: {
            modules: true,
            jsx: true,
        },
    },
    ignorePatterns: ['node_modules/**', '.storybook/**', 'src/stories/**', '*.scss', '*.js'] // ignoring here works

tsconfig :

"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules", "src/**/*.js"], // exclude here doesn't work.

пакет. json:

"scripts": {
    "lint": "tsc --project ./tsconfig.json --noEmit && eslint --ext=jsx,ts,tsx src"
},

1 Ответ

0 голосов
/ 15 апреля 2020

ESLint передает плагину @typescript-eslint/parser список файлов (которые ESLint получает из командной строки). Плагин @typescript-eslint/parser не может управлять этим списком, поэтому он делает все возможное, чтобы действовать на основе предоставленного им списка.

Сообщение об ошибке пытается сообщить пользователю, что ESlint помечает файл, который исключен из анализируется плагином @typescript-eslint/parser. С точки зрения плагина, это может произойти по двум причинам:

  1. Файл был намеренно, явно исключен (путем добавления его в tconfig exclude ).
  2. Пользователь забыл добавить файл в tsconfig include .

В последнем случае (что встречается гораздо чаще) плагин хочет сообщить пользователю, что его конфигурация неправильно, чтобы они могли это исправить. Следовательно, вы видите сообщение об ошибке.

Чтобы правильно исключить файлы из TSLint, можно использовать файл .eslintignore. Вы также можете изменить команду eslint, чтобы игнорировать исключенные файлы:

eslint ... --ignore-pattern "src/**/*.js"

(Но учтите, что шаблон игнорирования относится к текущему каталогу , а не относительно расположения tsconfig et c.)

В качестве альтернативы, если вы do хотите, чтобы ESLint линтировал файлы (но по-прежнему исключал их в tsconfig), вы можете рассмотреть возможность предоставления более включите tsconfig для @typescript-eslint/parser, создав файл tsconfig.eslint.json, который расширяется от вашего обычного tsconfig .

Также смотрите эти проблемы GitHub:

...