https://github.com/sverweij/dependency-cruiser
▎ 📐 dependency-cruiser
▎ Простыми словами: программа читает все файлы проекта и выписывает, кто кого подключает (import). Получается карта «файл А зависит от файла Б».
Живой пример, только что. Я спросил, что заденет правка liveStream.ts, файла, который я написал сегодня. Он показал цепочку:
main.tsx → App.tsx → ChatScreen.tsx → useChat.ts → useLiveUpdates.ts → liveStream.ts
↘️ Room.tsx → Feed.tsx → useChat.ts
↘️ Rail.tsx → useChat.ts
То есть правка этого файла потенциально задевает экран чата, ленту и боковую панель. Он показывает это сразу, без грепа и без догадок.
Чего он не видит, честно. Он знает только связи через import. А оба сегодняшних промаха были связями по смыслу:
- прибор нагрузки копировал поведение клиента, ничего не импортируя из него;
- сервер пишет поток в одном файле, клиент читает его в другом, и общего import между ними нет
Вообщем юзать можно часть ошибок grep закрывает
Post #379
132