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

Каталог правил ​

Все правила имеют префикс feod-structure/ и одинаково работают в ESLint и Oxlint. В таблице приведён состав статических пресетов. createConfig и configFromProject дополнительно включают опциональные проверки согласно политикам проекта.

error — правило включено; off — выключено. Autofix отсутствует у всех правил: изменение архитектурных границ требует решения разработчика.

ПравилоНазначениеrecommendedstrict
layer-importsНаправления зависимостей и публичные API модулейerrorerror
no-common-indexЗапрет index-файлов и их импорта в commonerrorerror
no-common-deepОграничение глубины каталогов commonerrorerror
no-zigzag-importsОтносительные импорты внутренних файлов другого модуляerrorerror
no-unknown-filesФайлы вне известных слоёвerrorerror
no-submodule-of-submoduleДоступ к глубоким подмодулям только владельцу и непосредственным parent/childerrorerror
pages-private-modulesОбласть доступа приватных модулей страницerrorerror
visibility-levelsГлубина внешних импортов для выбранных каталоговofferror
global-filesДопустимые пути файлов глобального слояoffoff
module-namesЗапрещённые имена владельцев модулейoffoff
module-entriesНаличие публичного entry-файла на дискеoffoff
no-module-cyclesЦиклы зависимостей между модулямиoffoff
no-file-cyclesЦиклы зависимостей между файламиoffoff
large-filesРазмер файлов и реестр планируемого разбиенияoffoff
confineОграничение импортов и строк выбранными файламиoffoff

visibility-levels без настроенного списка levels не ограничивает глубину, даже когда включён. no-submodule-of-submodule входит в оба пресета.

Когда включаются опциональные правила ​

Политика проектаПравилоДополнительное условие
globals.allowedFiles — непустой списокglobal-filesСлой с ролью global
modules.forbiddenNames — непустой списокmodule-namesСлой с ролью modules
modules.requirePublicEntry: truemodule-entriesСлой с ролью modules
cycles.modules: trueno-module-cyclesСлой с ролью modules
cycles.files: trueno-file-cycles—
extra.largeFiles — задан объектlarge-files—
extra.confine — непустой списокconfine—

Построитель включает правило как error, если оно нужно хотя бы одному корню, и передаёт каждому корню его options. Для warn сохраняйте эти options: ESLint, Oxlint.

Как читать примеры ​

В деревьях зачёркнуты запрещённые файлы или имена; значки рядом с ними содержат пояснения. В CodeView выберите файл в дереве, чтобы увидеть его код и границы зависимостей. На узком экране дерево и код переключаются кнопкой в панели. Маркеры у строк открывают пояснения при наведении или нажатии; подсветка «− / +» показывает, что удалить и чем заменить при исправлении.

Если не указано иное, используется стандартная структура src, конфигурация по умолчанию и настроенный парсер TypeScript. Комментарий с путём перед кодом показывает расположение файла. Импортируемые файлы в примерах предполагаются существующими. «Корректно» означает отсутствие нарушения рассматриваемого правила: другие правила могут накладывать дополнительные ограничения.

Раздел «Настройка» на странице правила показывает объект для createConfig. В ESLint функция импортируется из корня пакета, в Oxlint — из /configs. В feod.config.json записывается только объект, переданный первым аргументом.

Общие параметры прямого подключения ​

Параметры ниже передаются в options правила при ручном подключении. Не каждое правило принимает весь список: поддерживаемые группы указаны на его странице.

ГруппаПараметрЗначение по умолчаниюНазначение
ПутиrootDirprocess.cwd()Корень проекта
ПутиsrcRoot"src"Корень исходников относительно rootDir
ПутиignoreПустой списокGlob или массив исключений от rootDir
АлиасыaliasPrefix"@"Алиас корня вида @/…
АлиасыaliasRootsrcRootЦель алиаса корня
АлиасыlayerAliases@app, @pages, @modules, @common, @globalАлиасы слоёв; цели от rootDir

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

Явные roots ограничивают область архитектуры; при вложенности файл принадлежит ближайшему корню. FEOD ignore может исключать и импортирующий файл, и цель; подробности и отличия от files линтера — в руководстве по миграции.