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

feod-structure/visibility-levels ​

Глубина внешних импортов для выбранных каталогов.

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

Зачем нужно ​

Позволяет ограничить внешние обращения в выбранные каталоги, например открыть файлы непосредственно в router, сохранив его глубокую реализацию локальной. Без списка levels правило ничего не ограничивает.

Примеры ​

При levels: [{ name: 'router', visibility: 'default', maxDepth: 1 }]:

Ошибка ​

ts
// src/app/main.ts
import { guard } from './router/guards/auth'; // два сегмента после router

Корректно ​

ts
// src/app/main.ts
import { routes } from './router/routes'; // один сегмент

// src/app/router/routes.ts
import { guard } from './guards/auth'; // внутри того же router

Настройка ​

js
createConfig({
  levels: [
    { name: 'router', visibility: 'default', maxDepth: 1 },
    { name: 'components', visibility: 'transparent' },
    { name: 'common', visibility: 'open' },
  ],
}, { preset: 'strict' });
Поле элемента levelsЗначениеПоведение
nameИмя сегмента путиНаходится первое совпадение в пути цели
visibilitydefaultВнешняя глубина по умолчанию 1
visibilitytransparentИмя исключается из подсчёта глубины; собственный лимит по умолчанию 0
visibilityopenЭтот уровень не ограничивается
maxDepthЦелое число от 0Переопределяет лимит default/transparent

Глубина — число сегментов после уровня, включая имя файла. Имена всех transparent-уровней исключаются из подсчёта. Импорты изнутри того же каталога уровня не ограничиваются этой проверкой. open не отменяет правила других уровней и модульные границы.

Прямая опция levels совпадает с проектной; также доступны группы пути, алиасы, layerDirs.

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

Это проверка сегментов пути, а не произвольная система модульных ролей. Имя может совпасть с каталогом на разной глубине. Для публичных API модулей используйте layer-imports, для доступа к глубоким модулям — no-submodule-of-submodule.

Реализация ​

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