hyoo-ru / mam

Base MAM project
Creative Commons Zero v1.0 Universal
28 stars 16 forks source link

MAM builder refactoring #16

Open nin-jin opened 4 years ago

nin-jin commented 4 years ago

Область: тулинг по обработке исходного кода. Задача: переписать сборщик MAM проектов, декомпозировав его на модули. Цель: упростить поддержку и расширение кода сборщика.

Необходимые компетенции

Основные пожелания к новой реализации

  1. Собираются все существующие hyoo-проекты: https://github.com/hyoo-ru
  2. Сервер держит один экземпляр билдера.
  3. Билдер привязывается к пути до модуля.
  4. Сервер по ссылке понимает какой нужен модуль и переключает билдер на него.
  5. Сервер по ссылке понимает какой бандл у него запросили и говорит билдеру его собрать.
  6. Лоадер срабатывает на определённые типы файлов.
  7. Лоадер может выдавать список зависимостей с их приоритетами. 0 - максимальный приоритет.
  8. Лоадер может выдавать исходники других типов, на которых могут срабатывать другие лоадеры.
  9. Бандлер может запросить все исходники определённого типа.
  10. При запросе целевого типа исходника, если обнаруживаются те, которые можно скомпилировать в него - запускается компайлер на всех исходниках поддерживаемого им формата.
  11. Бандлер запрашивает файлы определённого типа, соединяет их вместе и кладёт в файловую систему.
  12. При зауске из консоли запускается сборка всех возможных бандлов.
  13. Типы плагинов: Лоадер, компайлер, бандлер.
  14. Все вычисления кешируются.
  15. Все обращения к файлам реактивны.
  16. Всё написано на TS по MAM соглашениям.

Дополнительные пожелания

  1. Упростить использование ESM и CJS модулей из NPM.
  2. Собирать сторонние модули с поддержкой tree-shaking.

Профит

С чего начать

Что такое MAM и зачем нужен: https://mol.hyoo.ru/#!section=docs/=icaxzk_7m3n3b Что такое ОРП и в чём его преимущества: https://mol.hyoo.ru/#!section=docs/=60uru_ixcfz2 Текущая версия сборщика: https://github.com/hyoo-ru/mam_mol/tree/master/build Текущие наработки по рефакторингу: https://github.com/hyoo-ru/mam/tree/new-builder-dev/mam По всем вопросам: https://t.me/mam_mol и лично к https://t.me/nin_jin

PavelZubkov commented 1 year ago
PavelZubkov commented 1 year ago
image

Требует плагина в вебпак для сборки, мб стоит учесть это. Т.е. для модулей npm может понадобится возможность задавать персональные настройки для нпм-сборщика

nin-jin commented 1 year ago

Не понимаю, что именно ты предлагаешь сделать для совместимости.