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

ESLint и Oxlint ​

Плагины o-feod проверяют архитектуру по расположению файлов и зависимостям между ними: направления импортов, публичные API модулей, приватные подмодули и структуру слоёв. ESLint и Oxlint используют одну реализацию правил, резолвер и конфигурацию FEOD.

Начните с подключения ESLint или Oxlint, затем выберите настройки в справочнике конфигурации. Для существующего проекта есть руководство по постепенной миграции.

Что выбрать ​

ESLintOxlint
Пакет@o-feod/eslint-structure-plugin@o-feod/oxlint-structure-plugin
ПодключениеFlat config, pluginsjsPlugins
Имена правилfeod-structure/*feod-structure/*
TypeScript и VueПарсеры настраивает проектИспользуется парсер Oxlint; проверяются script-блоки Vue
Конфигурация архитектурыОбщие roots, layers, aliases и политикиТе же настройки

FEOD-пресеты включают только архитектурные правила. Правила языка, форматирование, проверки Vue/React и настройки сборщика подключаются отдельно.

Версия документации

Раздел описывает реализацию в исходниках репозитория. При подключении сверяйте экспорты и README установленной версии: в 0.1.0 ещё нет createConfig, configFromProject и части расширенных проверок, описанных здесь.

Пресеты ​

recommended включает семь правил основной структуры. strict добавляет visibility-levels, но без levels эта проверка не ограничивает глубину. Опциональные правила выключены в обоих статических пресетах; createConfig и configFromProject включают их по заданным политикам.

Каталог правил показывает состав обоих пресетов и условия включения. Каждая страница правила содержит назначение, ошибочные и корректные примеры, параметры, ограничения и ссылки на реализацию и тесты.

Как устроена проверка ​

По умолчанию корень исходников — src, слои — app, pages, modules, common, global. Через layers можно задать собственный граф зависимостей; role подключает к выбранным слоям специальные проверки FEOD. Несколько корней могут иметь разные наборы слоёв и направленные зависимости.

Проверки импортов распознают import, реэкспорты, TypeScript import types и import-equals, незатенённый require() и динамический import() со статическим путём. Поддерживаются строковые литералы, шаблоны без подстановок и форма import(new URL('./file.ts', import.meta.url).href) с незатенённым URL. Вычисляемые пути по умолчанию пропускаются; imports.computed: "forbid" позволяет запретить их в layer-imports.

Плагин анализирует пути и зависимости, а не смысл бизнес-логики. Он не выбирает модуль за разработчика и не перестраивает файловую систему автоматически. Архитектурные правила не имеют autofix.