feod-structure/no-zigzag-imports
Относительные импорты внутренних файлов другого модуля.
Включено как error в recommended и strict. Autofix отсутствует. Поддерживается ESLint и Oxlint.
Зачем нужно
Запрещает относительный путь, который выходит из одного верхнего модуля и заходит во внутренний файл другого. Относительный импорт публичного API разрешён: обязательного требования использовать алиас нет.
Примеры
Ошибка
// src/modules/Cart/view.ts
import { model } from '../User/model'; Корректно
// src/modules/Cart/view.ts
import { user } from '../User';
import { user as userFromIndex } from '../User/index';
import { state } from './state'; Исправление импорта
// src/modules/Cart/view.ts
import { userState } from '../User/model';
import { userState } from '../User'; Не обязательно переходить на алиас: достаточно использовать публичный вход.
Настройка
createConfig({ modules: { publicEntries: ['index.ts', 'public.ts'] } });| Поле проекта | Прямая опция | По умолчанию |
|---|---|---|
modules.publicEntries | publicEntries | [] — публичны index.* |
transitModules | transitModules | [] |
Прямые options также принимают группы пути, алиасы, layerDirs: { modules: '…' }.
Границы проверки
Правило срабатывает для относительных импортов между разными верхними модулями. Алиасы, доступ parent/child и внутренние границы вложенных модулей проверяет layer-imports. Для глубокого адресата определяется публичный entry его непосредственного владельца, но no-submodule-of-submodule может запрещать даже публичный доступ к нему.