Когда вы разрабатываете сложное внешнее приложение, его код может стать запутанным и трудным для понимания. Просто потому, что большую часть времени у вас нет времени писать «чистый» код и документировать все, что вы пишете. Даже если вы работаете в большой команде с хорошо налаженными процессами разработки, иногда бывает трудно связаться с некоторыми частями приложения. Особенно для новых разработчиков.
Обычно разделение кода на модули может решить эту проблему. По сути, модули — это просто изолированные части кода, которые используются в разных местах вашего проекта. Например, если вы разрабатываете приложение для реагирования, у вас могут быть модули, содержащие связанные с ним компоненты, утилиты, тесты, хранилище, маршрутизатор и т. д. С таким структурированным кодом намного проще иметь дело.
Но даже при такой структуре проекта не всегда очевидно, как эти модули взаимодействуют друг с другом. Например, если вы хотите провести рефакторинг одного модуля, вы не можете быть на 100% уверены в том, на какие модули повлияют ваши изменения.
Как упростить работу с модулями?
Вы можете написать небольшие описания для каждого модуля, который у вас есть, и где в проекте они используются. Проблема в том, что очень сложно поддерживать эту информацию в актуальном состоянии.
Я решил создать инструмент, который будет собирать и отображать информацию о модулях приложения. Modulism — это CLI для отслеживания того, как модули зависят друг от друга в вашем проекте. Это позволяет вам увидеть, где используется модуль и какие другие модули он импортирует с помощью одной команды.
Основная функция Modulism CLI
CLI собирает данные об импорте во всех файлах вашего проекта и на основе этого строит граф зависимостей модулей друг от друга, который сохраняется в конфигурационный файл. После завершения этого процесса вы сможете получить информацию о любом модуле в вашем проекте, выполнив команду modulism log <ModuleName>
в своем терминале.
Вы также можете распечатать информацию о каждом модуле, запустив modulism log
(без указания модулей).
Это может помочь вам:
- Обнаружение ненужного импортированного функционала.
- Проверка того, какие модули можно сломать, рефакторингом определенного.
- Выяснение модуля или модулей, о которых вы ничего не знаете.
Пример печатной информации о модуле:
- «Импорт» — это список модулей, которые выбранный модуль импортирует в себя. Синие точки — это определенные группы импортируемых модулей.
- «Экспортировать в» — это модули, в которые экспортируется выбранный модуль. Фиолетовые точки — это группы выбранных модулей, которые он экспортирует.
- «Группы» — это определенные части кода выбранного модуля.
Как CLI определяет, где находится каждый модуль?
Чтобы начать работу, вы должны пометить свои модули. Для этого создайте файл <moduleName>.modulism
в корневой папке модуля.
<moduleName>.modulism
файл может быть пустым или содержать в себе описание модуля.
Вы также можете разделить свои модули на группы, чтобы данные результатов были для вас более информативными.
Вы можете сделать это двумя способами.
- Определить каталог группы. Чтобы определить каталог группы, просто добавьте файл
.<groupName>.modulism
в каталог группы. - Определить групповой файл. Для определения группового файла добавьте строку
*modulism-group <groupName>
в комментарии к вашему файлу.
Спасибо за прочтение.
Если вы заинтересованы в том, чтобы попробовать модульность в своем проекте, я предлагаю вам прочитать документацию. Проверьте ссылки ниже.
Документация — https://davy.page/modulism
Пакет NPM — https://npmjs.com/package/modulism
Репозиторий GitHub — https://github.com/IDSaves/modulism