Структура каталогов в проекте Angular, над которым я работаю, выглядит следующим образом (сведена к соответствующим файлам):
project
|- libs
| |- utils
| |- common
| |- src
| | |- lib
| | |- model
| | | |- translation
| | | |- translation-helper.ts (3)
| | |- utils-common.module.ts
| |- .eslintrc.json (2)
| |- project.json
|- .eslintrc.json (1)
Для дальнейшего использования я пронумеровал файлы.
Файлы .eslintrc.json
делают некоторые заявления о включении/исключении файлов:
(1) начинается так:
{
"root": true,
"ignorePatterns": ["**/*"],
(2) начинается так:
{
"extends": ["../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
Обратите внимание: я думаю, что никто в команде не написал этот код; Я думаю, что все это часть целой кучи файлов, которые nx генерирует автоматически для всех модулей. Несмотря на это, основываясь на документах для .eslintrc.json, я думаю, что это имеет смысл и должно работать — глобально исключаются все файлы, что переопределяется для каждого модуля путем отрицания (отсюда и шаблон !
) исключения подстановочных знаков (и возможно, затем объявление более конкретных исключений).
Теперь я пытаюсь запустить ESLint для файла (3):
npx nx lint utils-common --files=**/model/translation/translation-helper.ts
К сожалению, это приводит к следующему выводу:
Linting "utils-common"...
> NX All files matching the following patterns are ignored:
- 'libs/utils/common/src/**/*.ts'
Please check your '.eslintignore' file.
Pass --verbose to see the stacktrace.
В иерархии каталогов нет файлов .eslintignore
.
Кроме того, я очень уверен, что файл (2) подхватывается ESLint, если, например. путь, указанный в extends
из (2), неверен (например, один уровень каталога слишком велик или слишком мал), ESLint выводит соответствующую ошибку.
Наконец, ESLint с радостью выполнит анализ, если я удалю шаблон игнорирования **/*
из (1), но я чувствую, что это не было намерением того, кто/инструмент/шаблон поместил этот шаблон игнорирования в первую очередь. Кроме того, я хочу понять, почему это не работает так, как сейчас настроено.
Что здесь происходит? Почему ESLint утверждает, что все мои файлы исключены?
Похоже, ignorePatterns
действительно работает так, как я описал.
Однако файл (2) также содержал в своем разделе overloads
следующее:
"files": ["*.ts"],
"extends": [
"plugin:@nrwl/nx/angular",
"../../../.eslintrc.json"
],
Это привело к тому, что файл (1) был снова включен, включая исходный ignorePatterns
с **/*
, тем самым обойдя мою адаптацию ignorePatterns
выше в файле (2).
Решение, которое я выбираю, состоит в том, чтобы иметь дополнительный корневой файл .eslintrc.json
(с другим именем), который определяет основу для переопределения отдельных правил. Затем изнутри overrides
я могу расширить этот файл, тогда как глобальный атрибут extends
будет указывать на исходный корневой файл.
@grenobnik: Да, у меня работает так, как описано здесь.
Это работает, ваше решение? У меня такая же проблема, но даже с вашими подсказками я не могу избавиться от этой ошибки