BetaДокументация для beta‑теста, возможны ошибки и неточности.
Перейти к содержимому

feod-structure/module-names ​

Запрещённые имена владельцев модулей.

Выключено в recommended и strict. Включается настройками проекта. Autofix отсутствует. Поддерживается ESLint и Oxlint.

Зачем нужно ​

Позволяет договориться о предметных именах модулей и запретить названия, которые в конкретном проекте превращаются в общие свалки. Встроенного списка запрещённых имён нет.

Примеры ​

При modules.forbiddenNames: ['shared', 'utils'] важно отличать владельца модуля от обычного каталога реализации.

  • modules
    • shared
      • index.ts
    • User
      • index.ts
      • utils
        • format.ts
      • modules
        • utils
          • index.ts

User/utils разрешён, а User/modules/utils запрещён: сегмент modules обозначает границу нового владельца. Пояснения доступны у значков в дереве.

Настройка ​

js
createConfig({ modules: { forbiddenNames: ['shared', 'utils'] } });
Поле проектаПрямая опцияПо умолчанию
modules.forbiddenNamesforbiddenNames[] — проверка отключена
singleFileModulessingleFileModulesfalse
transitModulestransitModules[]

Сравнение точное и чувствительно к регистру. Проверяются текущий владелец и его предки: верхние и вложенные модули, transit-контейнер и прямые дети. Для однофайлового модуля имя берётся без последнего расширения. Пустой список в корне сбрасывает унаследованный запрет.

Прямые options также принимают группу пути, layers, layerDirs: { modules: '…' }.

Ограничения ​

Inventory находит и пустые каталоги модулей, и владельцев только с assets; диагностики дедуплицируются за прогон. Отключение правила через files у одного исходника не исключает его владельца из filesystem inventory. Чтобы исключить область, используйте настройки корней или FEOD ignore.

Реализация ​

Исходный код · Тесты · Все правила