Инструменты
dma.config
Опциональный конфиг проекта: srcRoot, composition roots и monorepo roots.
Zero-config остаётся default. Добавляйте dma.config.* только для нестандартного src/ или общих monorepo roots.
Форматы
Первый найденный в каталоге побеждает:
dma.config.tsdma.config.mtsdma.config.mjsdma.config.jsdma.config.json
CLI ищет конфиг вверх от positional path. Явно: --config <file>.
Схема
import { defineConfig } from "@derived-modular/cli";
export default defineConfig({
srcRoot: "src", // default
compositionRoots: ["app", "pages", "routes"], // default
roots: ["apps/web", "apps/admin"], // опционально; относительно каталога конфига
includePackages: false, // опционально
});| Поле | Default | Смысл |
|---|---|---|
srcRoot | "src" | Каталог исходников в пакете |
compositionRoots | ["app","pages","routes"] | Папки composition root под srcRoot |
roots | — | Явные DMA-корни (как --roots) |
includePackages | false | Включать library-пакеты без composition root |
Неизвестные ключи — ошибка (exit 2).
Precedence
- Встроенные defaults
- Файл конфига
- CLI-флаги (
--roots,--include-packages,--config)
--include-packages перекрывает конфиг только если флаг есть в argv.
Примеры
Кастомная папка исходников
{
"srcRoot": "source",
"compositionRoots": ["pages"]
}Корни монорепо
import { defineConfig } from "@derived-modular/cli";
export default defineConfig({
roots: ["apps/web", "apps/admin"],
});npx @derived-modular/cli check .
# без конфига:
npx @derived-modular/cli check --roots apps/web,apps/adminЛинтеры
ESLint / Oxlint (@derived-modular/eslint-plugin) читают srcRoot и compositionRoots из dma.config.*, если они не заданы в settings.dma (settings побеждают). Biome пока не читает dma.config.