Files
nextjs-template/ai/nextjs-style-guide/applied/aliases.md
S.Gromov f2358da397 docs: добавить стайлгайд nextjs-style-guide в репозиторий
- Добавлена документация SLM-архитектуры, базовых правил и прикладных разделов
- Добавлены разделы: стили, SVG-спрайты, шаблоны генерации, PostCSS, REST, Realtime
- Удалены устаревшие файлы (спрайты, скрипты, стили из app/)
2026-04-30 19:32:10 +03:00

2.8 KiB
Raw Blame History

title, description, keywords
title description keywords
Алиасы импортов Какие алиасы импортов есть в проекте и как ими пользоваться.
алиасы
aliases
paths
tsconfig
импорты
baseUrl
app
layouts
screens
widgets
business
infrastructure
ui
shared

Алиасы импортов

Какие алиасы импортов есть в проекте и как ими пользоваться.

Конфиг

tsconfig.json в корне проекта:

{
  "compilerOptions": {
    "paths": {
      "app/*":            ["./src/app/*"],
      "layouts/*":        ["./src/layouts/*"],
      "screens/*":        ["./src/screens/*"],
      "widgets/*":        ["./src/widgets/*"],
      "business/*":       ["./src/business/*"],
      "infrastructure/*": ["./src/infrastructure/*"],
      "ui/*":             ["./src/ui/*"],
      "shared/*":         ["./src/shared/*"]
    }
  }
}

Восемь алиасов — ровно по числу слоёв. Других алиасов в проекте нет.

Правила

  • Каждый импорт между модулями — через алиас слоя. Относительные пути (../../) запрещены за пределами своего модуля.
  • Внутри одного модуля допустимы относительные импорты (./model, ./ui/button) — это часть инкапсуляции модуля.
  • Префикс @/ не используется. Имя слоя — само по себе адрес.
  • Направление импортов определяется архитектурой, не алиасами. Алиас разрешает импорт технически, но не отменяет правила слоёв (→ Слои).

Хорошо

import { Button } from 'ui/button'
import { useUser } from 'business/user'
import { formatDate } from 'shared/utils/date'

Плохо

// Относительный путь между модулями
import { Button } from '../../../ui/button'

// Префикс @/, которого нет в paths
import { Button } from '@/ui/button'

// Алиас на src — не предусмотрен
import { Button } from 'src/ui/button'

Внутри модуля

Внутри своего модуля — относительные пути:

// src/ui/button/button.tsx
import styles from './button.module.css'
import { Icon } from './icon'

Не использовать алиас на самого себя:

// Плохо — алиас вместо относительного пути внутри модуля
import { Icon } from 'ui/button/icon'