Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MAM builder refactoring #16

Open
nin-jin opened this issue Dec 4, 2019 · 3 comments
Open

MAM builder refactoring #16

nin-jin opened this issue Dec 4, 2019 · 3 comments

Comments

@nin-jin
Copy link
Member

nin-jin commented Dec 4, 2019

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

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

  • NodeJS: работа с файлами, серверами и процессами
  • Понимание TypeScript и TS Compiler API

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

  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.

Профит

  • Появление более качественного тулинга для быстрой разработки своих TS проектов.
  • Освоение парадигмы "Объектного Реактивного Программирования" на практике.

С чего начать

Что такое 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
Copy link
Member

PavelZubkov commented Nov 17, 2022

  • Отделить билдер от сервера, что бы потом в $hyoo_studio можно было заюзать билдер
  • Еще NPM-пакеты прогонять через что-нибудь заточенное под npm, чтобы они подключались без плясок с бубном + тришейкинг

@PavelZubkov
Copy link
Member

image

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

@nin-jin
Copy link
Member Author

nin-jin commented Dec 1, 2022

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants