Все файлы, соответствующие следующим шаблонам, игнорируются. Почему?

Структура каталогов в проекте 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 утверждает, что все мои файлы исключены?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
99
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, ignorePatterns действительно работает так, как я описал.

Однако файл (2) также содержал в своем разделе overloads следующее:

"files": ["*.ts"],
"extends": [
    "plugin:@nrwl/nx/angular",
    "../../../.eslintrc.json"
],

Это привело к тому, что файл (1) был снова включен, включая исходный ignorePatterns с **/*, тем самым обойдя мою адаптацию ignorePatterns выше в файле (2).

Решение, которое я выбираю, состоит в том, чтобы иметь дополнительный корневой файл .eslintrc.json (с другим именем), который определяет основу для переопределения отдельных правил. Затем изнутри overrides я могу расширить этот файл, тогда как глобальный атрибут extends будет указывать на исходный корневой файл.

Это работает, ваше решение? У меня такая же проблема, но даже с вашими подсказками я не могу избавиться от этой ошибки

grenobnik 28.04.2023 16:53

@grenobnik: Да, у меня работает так, как описано здесь.

F-H 28.04.2023 18:12

Другие вопросы по теме