Когда вы разрабатываете сложное внешнее приложение, его код может стать запутанным и трудным для понимания. Просто потому, что большую часть времени у вас нет времени писать «чистый» код и документировать все, что вы пишете. Даже если вы работаете в большой команде с хорошо налаженными процессами разработки, иногда бывает трудно связаться с некоторыми частями приложения. Особенно для новых разработчиков.

Обычно разделение кода на модули может решить эту проблему. По сути, модули — это просто изолированные части кода, которые используются в разных местах вашего проекта. Например, если вы разрабатываете приложение для реагирования, у вас могут быть модули, содержащие связанные с ним компоненты, утилиты, тесты, хранилище, маршрутизатор и т. д. С таким структурированным кодом намного проще иметь дело.

Но даже при такой структуре проекта не всегда очевидно, как эти модули взаимодействуют друг с другом. Например, если вы хотите провести рефакторинг одного модуля, вы не можете быть на 100% уверены в том, на какие модули повлияют ваши изменения.

Как упростить работу с модулями?

Вы можете написать небольшие описания для каждого модуля, который у вас есть, и где в проекте они используются. Проблема в том, что очень сложно поддерживать эту информацию в актуальном состоянии.

Я решил создать инструмент, который будет собирать и отображать информацию о модулях приложения. Modulism — это CLI для отслеживания того, как модули зависят друг от друга в вашем проекте. Это позволяет вам увидеть, где используется модуль и какие другие модули он импортирует с помощью одной команды.

Основная функция Modulism CLI

CLI собирает данные об импорте во всех файлах вашего проекта и на основе этого строит граф зависимостей модулей друг от друга, который сохраняется в конфигурационный файл. После завершения этого процесса вы сможете получить информацию о любом модуле в вашем проекте, выполнив команду modulism log <ModuleName> в своем терминале.

Вы также можете распечатать информацию о каждом модуле, запустив modulism log (без указания модулей).

Это может помочь вам:

  • Обнаружение ненужного импортированного функционала.
  • Проверка того, какие модули можно сломать, рефакторингом определенного.
  • Выяснение модуля или модулей, о которых вы ничего не знаете.

Пример печатной информации о модуле:

  • «Импорт» — это список модулей, которые выбранный модуль импортирует в себя. Синие точки — это определенные группы импортируемых модулей.
  • «Экспортировать в» — это модули, в которые экспортируется выбранный модуль. Фиолетовые точки — это группы выбранных модулей, которые он экспортирует.
  • «Группы» — это определенные части кода выбранного модуля.

Как CLI определяет, где находится каждый модуль?

Чтобы начать работу, вы должны пометить свои модули. Для этого создайте файл <moduleName>.modulism в корневой папке модуля.

<moduleName>.modulism файл может быть пустым или содержать в себе описание модуля.

Вы также можете разделить свои модули на группы, чтобы данные результатов были для вас более информативными.

Вы можете сделать это двумя способами.

  1. Определить каталог группы. Чтобы определить каталог группы, просто добавьте файл .<groupName>.modulism в каталог группы.
  2. Определить групповой файл. Для определения группового файла добавьте строку *modulism-group <groupName> в комментарии к вашему файлу.

Спасибо за прочтение.

Если вы заинтересованы в том, чтобы попробовать модульность в своем проекте, я предлагаю вам прочитать документацию. Проверьте ссылки ниже.

Документация — https://davy.page/modulism

Пакет NPM — https://npmjs.com/package/modulism

Репозиторий GitHub — https://github.com/IDSaves/modulism