(швед. arkitektur)
Дамы и господа, представляю вашему вниманию arkit — инструмент, который анализирует файлы вашего проекта и генерирует диаграмму зависимостей между ними и внешними модулями. Наверное, проще показать на примере самого arkit:
Таким образом, по каждому коммиту, эта SVG-диаграмма обновляется и позволяет всегда видеть актуальную общую картину. Обзор возможностей на данный момент:
- Ассоциирует файлы проекта с указанными компонентами архитектуры;
- Группирует проекты и отображает зависимости между ними;
- Поддерживает JavaScript, TypeScript, Flow, а также node-модули;
- Экспортирует визуализацию архитектуры как SVG, PNG или Plant UML диаграмму;
- Интегрируется в процесс разработки, поэтому вашм CI, VCS, README и PR довольны.
Попробуйте его простой командой
npx arkit -o arkit.svg
в папке проекта и расскажите как вам результат. Также мне интересно была ли необходимость в таком решении и какие альтернативы вы пробовали. Комментарии (23)
frostspb
13.03.2019 14:00с проектом на nuxt.js она отрисовала серверные зависимости норм, а вот уже всё остальное не очень. Всё что в папке pages она не смогла слинковать
javascript Автор
13.03.2019 14:24А можно посмотреть пару исходников? Точнее как устроены импорты.
frostspb
13.03.2019 17:00import furyBasePage from '~/components/base/page.vue'
import furyActionButton from '~/components/base/actionButton.vue'
В ~/components/base/page.vue используются компоненты vuetify подключенные в nuxt VuetifyLoader'омjavascript Автор
13.03.2019 17:14Видимо он не распознаёт тильду.
А где прописано куда она ведёт? В webpack.config?frostspb
13.03.2019 17:40webpack config инкапсулирован в недрах nuxt.js
Причем. пути еще могут и без / выглядеть. Типа так ~assets/style/variables.styljavascript Автор
13.03.2019 18:03Записал поддержку webpack resolve alias в roadmap. Спасибо!
RouR
13.03.2019 14:05какие альтернативы вы пробовали
Я написал либу для C#. Экспорт в Graphviz.
Но была немного другая задача, получить архитектурную диаграмму микросервисов, кто куда какие DTO отправляет.
Поскольку Graphviz сам рисует и выбирает где какой блок разместить, то получилось не красиво, и не наглядно.javascript Автор
13.03.2019 14:25arkit использует PlantUML, который в свою очередь dot и старый добрый Graphviz :-)
zhka
13.03.2019 15:44После запуска выводит HTML с телом:
<pre>Payload Too Large</pre>
Что я делаю не так?javascript Автор
13.03.2019 15:50Всё так, это express экономит. Попробуйте, пожалуйста, ещё раз.
zhka
13.03.2019 16:25Запустил с LEVEL=trace… а там
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed — JavaScript heap out of memory
Отправил трейс в личку.
Попробовал указать при запуске
NODE_OPTIONS='--max_old_space_size=4096'
при этом просто вылетает с сообщением
Invalid string length
VolCh
Увы, упало
Циклические зависимости должно разруливать?
JustDont
У меня на мою мешанину импортов с легкостью петли нарисовало. У меня правда очень мелкий код пока что.
javascript Автор
Я также тестировал на ReactDOM:
javascript Автор
Уффф, интересно. А можно посмотреть лог, если запустить
LEVEL=trace npx arkit
?VolCh
перестало вылетать с https://habr.com/en/post/443560/#comment_19878226, но теперь пишет
componentsByName[component.name].push is not a function
javascript Автор
А вообще циклические зависимости не должны мешать, он просто нарисует связь в обе стороны.