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

feod-structure/module-entries ​

Наличие публичного entry-файла на диске.

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

Зачем нужно ​

Проверка импортов не гарантирует, что у каждого модуля есть публичная точка входа на диске. Это правило находит владельцев, у которых entry ещё не создан или был удалён.

Примеры ​

При modules.requirePublicEntry: true и modules.publicEntries: ['index.ts'] модулю недостаточно иметь файлы реализации: нужен entry на диске.

Ошибка: публичной точки входа нет ​

  • modules
    • User
      • model.ts
      • view.ts

Корректно: добавлен entry ​

  • modules
    • User
      • index.ts
      • model.ts
      • view.ts

Добавление пустого entry удовлетворяет проверке наличия. Какие значения он экспортирует и можно ли импортировать конкретный путь — отдельные вопросы.

Настройка ​

js
createConfig({
  modules: {
    requirePublicEntry: true,
    publicEntries: ['index.ts', 'public.ts'],
  },
});
Поле проектаПрямая опцияПо умолчанию
modules.requirePublicEntryrequirePublicEntryfalse
modules.publicEntriespublicEntries[] — подходит index.*
singleFileModulessingleFileModulesfalse
transitModulestransitModules[]

Достаточно одного разрешённого entry. Имена в publicEntries точные, без путей и glob-масок. Однофайловые модули освобождены от требования. У transit-контейнера entry не требуется, у его публичных подмодулей требуется.

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

Ограничения и связанные правила ​

Inventory проверяет файловую систему, включая пустые и asset-only модули; сообщения дедуплицируются по владельцу за прогон. Наличие файла не гарантирует, что он экспортирует нужные значения. Допустимость импорта конкретного entry проверяют layer-imports и no-zigzag-imports.

Реализация ​

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