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

feod-structure/no-zigzag-imports ​

Относительные импорты внутренних файлов другого модуля.

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

Зачем нужно ​

Запрещает относительный путь, который выходит из одного верхнего модуля и заходит во внутренний файл другого. Относительный импорт публичного API разрешён: обязательного требования использовать алиас нет.

Примеры ​

Ошибка ​

ts
// src/modules/Cart/view.ts
import { model } from '../User/model'; 

Корректно ​

ts
// src/modules/Cart/view.ts
import { user } from '../User'; 
import { user as userFromIndex } from '../User/index';
import { state } from './state'; 

Исправление импорта ​

ts
// src/modules/Cart/view.ts
import { userState } from '../User/model'; 
import { userState } from '../User'; 

Не обязательно переходить на алиас: достаточно использовать публичный вход.

Настройка ​

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

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

Границы проверки ​

Правило срабатывает для относительных импортов между разными верхними модулями. Алиасы, доступ parent/child и внутренние границы вложенных модулей проверяет layer-imports. Для глубокого адресата определяется публичный entry его непосредственного владельца, но no-submodule-of-submodule может запрещать даже публичный доступ к нему.

Реализация ​

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