Biome
GritQL-эвристики @derived-modular/biome-plugin для проектов на Biome.
@derived-modular/biome-plugin добавляет четыре архитектурных правила DMA в Biome через GritQL-паттерны. Удобно, если Biome у вас уже единственный линтер и форматтер.
Это приблизительный: плагин смотрит на строки импорта, а не строит полный граф. Точнее работает ESLint-плагин — там есть @derived-modular/boundaries и нормальный резолв путей.
В CI всё равно нужен dma check.
Установка
npm install -D @derived-modular/biome-pluginНастройка
// biome.jsonc
{
"extends": ["@derived-modular/biome-plugin"],
"files": {
"includes": ["**", "!dist"]
}
}Плагин подключает четыре GritQL-правила: layer-direction, feature-to-feature, public-api, no-barrel.
Что покрывается
| Правило | Biome | ESLint | dma check |
|---|---|---|---|
layer-direction | эвристика | ✓ | ✓ |
feature-to-feature | эвристика | ✓ | ✓ |
public-api | эвристика | ✓ | ✓ |
no-barrel | эвристика | ✓ | ✓ |
no-cycle | — | — | ✓ |
| предикаты входящих рёбер | — | — | ✓ |
Ограничения
Нет резолва импортов. Плагин ищет паттерны @/ и относительных путей, но не читает tsconfig aliases целиком. Сложные алиасы могут проскочить или дать ложное срабатывание.
Пути к Grit-плагинам резолвятся от корня проекта (./node_modules/@derived-modular/biome-plugin/...). В flat node_modules (npm, bun) работает стабильно; в некоторых monorepo / PnP раскладках Biome ещё дорабатывает shared-config.
Нет графовых правил. Циклы и «feature с входящие рёбра → service» — только в CLI.
Если можете выбрать — берите ESLint-плагин. Biome оставьте для команд, которые уже полностью на Biome и готовы к эвристикам.
Когда подходит
| Ситуация | Рекомендация |
|---|---|
| Biome — единый toolchain | biome-plugin + dma check в CI |
| Уже есть ESLint | ESLint вместо Biome для DMA |
| Нужна максимальная точность в редакторе | ESLint, не Biome |
Пример конфига — examples/vue-vite/biome.jsonc.