Skip to content

Конфигурация

Archora читает опциональный archora.config.{ts,js,json,mjs,cjs} из корня проекта. Без файла конфига он работает на разумных дефолтах — конфиг нужен для тонкой настройки.

Схема

ts
// archora.config.ts
import { defineConfig } from '@archora/core/config';

export default defineConfig({
  // обнаружение файлов
  include: ['src/**/*'],
  exclude: ['**/*.spec.ts', '**/__tests__/**'],

  // объявленные слои (FSD-стиль или ваш собственный)
  // направление "разрешено импортировать": app → pages → widgets → features → entities → shared
  layers: [
    { name: 'app',      patterns: ['src/app/**'] },
    { name: 'pages',    patterns: ['src/pages/**'] },
    { name: 'widgets',  patterns: ['src/widgets/**'] },
    { name: 'features', patterns: ['src/features/**'] },
    { name: 'entities', patterns: ['src/entities/**'] },
    { name: 'shared',   patterns: ['src/shared/**'] },
  ],

  // jump-to-file в редакторе (альтернатива — env FRONTSCOPE_EDITOR)
  editor: 'vscode', // 'vscode' | 'webstorm' | 'cursor' | 'idea' | string
});

Слои

Слой — именованная корзина модулей. Порядок в layers определяет, что разрешено импортировать: ранние слои могут импортировать поздние, никогда наоборот.

Обратный импорт регистрируется как layer violation в панели Insights. На это можно навесить CI-гейт — см. check.

Per-модульные overrides через .archora.json

archora.config.{ts,js,json} задаёт порядок слоёв и дефолтное соответствие glob → слой. Для точечных переопределений — «этот хелпер на самом деле принадлежит shared, а не features, где он лежит по пути» — существует соседний .archora.json:

json
{
  "layerOverrides": {
    "src/features/auth/lib/jwt.ts": "shared",
    "src/legacy/**": "infra"
  }
}

.archora.json коммитится в репо: overrides — это проектные архитектурные решения, а не личные предпочтения. Десктоп-приложение даёт GUI-редактор этого файла под иконкой Layers в TopBar проекта (/project/:id/layer-rules) — live-предпросмотр нарушений на каждый keystroke, atomic-save с сохранением остальных полей JSON. См. Работа с графом.

Исключённый код

Тесты и stories исключены по умолчанию (*.test.*, *.spec.*, *.stories.*). Сгенерированные .d.ts исключены. Build-конфиги (vite.config, webpack.config, ...) детектятся и помечаются как infra — остаются в графе, но фильтруются из метрик по умолчанию.

Без конфига

Без файла конфигурации Archora:

  • Включает всё под найденными entry-точками.
  • Не имеет правил слоёв (значит, нарушений не будет).
  • Использует vscode для «Open in editor».

Этого достаточно для первого скана. Конфиг добавляйте, когда захотите ужесточить include-глобы или включить enforcement слоёв.

Выпущено под лицензией BUSL-1.1.