Сравнение с madge / dependency-cruiser
madge и dependency-cruiser — два самых известных инструмента анализа зависимостей в JS. Archora использует тот же базовый примитив — парсит импорты и строит граф — но оптимизируется под другой workflow.
Сравнение
| madge | dependency-cruiser | Archora | |
|---|---|---|---|
| Основное назначение | Визуализация / список зависимостей, поиск циклов | Энфорс архитектурных правил в CI | Диагностика «что чинить первым» и верификация фикса |
| Вывод | Дерево, список, картинка (graphviz) | Lint-style violations, dot graph | Очередь починки с reason/action/verify, HTML-бриф, fix-plan JSON |
| UI | Только CLI | Только CLI | Десктоп + CLI + отчёты |
| Поиск циклов | Да | Да (по правилу) | Да + suggested breakpoint, severity, кандидат на type-only auto-fix |
| Layer / boundary правила | Нет | Да (forbidden/allowed) | Да (.archora.json contracts/layerOverrides) с live-preview |
| Hot zones / risk score | Нет | Нет | Да (fan-in/out + cycles + churn) |
| Политика generated-кода | Нет | Частично через excludes | Отдельный analysis.generated (exclude / classify) с поправкой приоритета |
| Bundle awareness | Нет | Частично | Да (heavy chunks, дубликаты, hot solos) |
| Git история (churn / coupling) | Нет | Нет | Да (per-module churn, temporal coupling) |
| Фреймворки | JS/TS | JS/TS | TS/JS + Vue + Svelte + RSC директивы |
| Где хранятся данные | Локально | Локально | Локально — исходники не покидают машину |
| Exit-коды для CI | Ограниченные | Да | Да (--fail-on grade:D, cycles:0, new-cycles:0, signals:high, …) |
| Отчёты для ревью | Картинка / JSON | JSON / HTML | HTML-бриф + fix-plan JSON + JUnit + Markdown |
| Diff против baseline | Нет | Ограничен | Да (archora diff --base scan.json) |
Что выбирать
- Быстрая визуализация / «есть ли циклы?» — madge самый дешёвый ответ.
- Lint-style утверждения в CI — у dependency-cruiser зрелый rule DSL и он отлично работает как чистый линтер.
- Workflow починки на реальной кодовой базе — Archora, потому что вопрос смещается с «есть ли циклы?» на «какой именно важен, почему, где, и как безопасно проверить фикс?». Architecture Workspace, fix-plan JSON, generated policy и diff-baseline собраны вокруг этого workflow.
Их можно совмещать: оставить dependency-cruiser как строгий линтер, а Archora использовать как surface для диагностики и PR-бриф.
Local-first
И madge, и dependency-cruiser локальные по умолчанию. Archora явно делает это свойством продукта:
- Десктоп-приложение и CLI работают полностью на машине пользователя. В процессе скана / парсинга / анализа / отчёта нет ни одного сетевого вызова.
- Нет телеметрии. Метаданные проекта не покидают процесс.
- Кэш (
.archora/) — это локальные файлы, и только.
Если Archora заходит в регулируемое окружение, именно local-first — то свойство, на которое можно сослаться.