Многопроектная сборка и динамическая загрузка модулей с помощью веб-пакета
У меня есть потенциально большое приложение Angular 2, которое мы собираемся разбить на несколько частей (его можно рассматривать как связки в терминологии WebPack). Более того, мы собираемся строить и развертывать их отдельно. Таким образом, различные части приложения могут быть динамически загружены из основного приложения (не в пределах одного и того же веб-приложения - в нескольких запущенных службах, которые могут находиться на разных физических хостах).
Webpack делает пакетирование довольно быстро и хорошо. Но, как я знаю из вывода, он использует сложный внутренний формат (используя номера модулей, сопоставленные с реальными путями / именами). Кроме того, разделение кода осуществляется с помощью некоторой магии путем сопоставления идентификаторов модулей с именами чанков, которые затем могут быть динамически загружены.
Проблемы здесь с веб-пакетом я вижу:
- Если он использует числа для сборки, я не могу легко построить отдельные части, которые могут повторно использовать некоторые модули, так как номера модулей могут конфликтовать. Я знаю о recordsPath, но это похоже на хак в многопроектной системе (как в этом случае мне нужно поддерживать и поддерживать записи для всей системы).
- Я не могу просто динамически загружать / импортировать любой внешний модуль с помощью веб-пакета (что мне нужно, чтобы он работал, как это сделано в System.js - System.import (' http://localhost:9900/data/index.js') или что-то в этом роде вот так. Это на самом деле не работает в веб-пакете. Я могу эмулировать это путем разделения кода, но это означает, что он просто отделяет некоторую часть существующего (не внешнего) кода, и вы не можете сделать это для внешнего приложения.
- Я не могу легко повторно использовать общие модули в разных проектах. Например У меня может быть модуль 'A' в основном проекте, и у меня могут быть проекты p1 и p2, которые должны импортировать 'A'. Я мог бы сделать "А" как внешний, но это может быть просто небольшой сервис из основного приложения.
Так что есть идея, если это возможно, используя webpack1/2, или я должен смотреть на такие инструменты, как jspm, System.js, browserify и т. Д.? Мне нравится, как webpack выполняет свою работу (настраивает, гибкая, работает быстро и может объединять многие вещи), но эти проблемы усложняют такие варианты использования.
Заранее спасибо.