feat(*): add modules support - #56
Conversation
6d132de to
fec6b2f
Compare
|
Пул-реквест все равно получился большой, но изменения в самом пакете arui-scripts тут сведены к минимуму - только то, что непосредственно нужно для работы самих модулей |
|
|
||
| export const MF_ENTRY_NAME = 'remoteEntry.js'; | ||
|
|
||
| export function patchMainWebpackConfigForModules(webpackConf: webpack.Configuration) { |
There was a problem hiding this comment.
nitpick: тут мб сменить название? или засунуть сюда patchWebpackConfigForEmbedded, чтобы в вебпак-конфиге уже готовая конфигурация была? а то складывается ощущение что именно в этой функции происходит патчинг для всех модулей, а по факту тут только wmf, сам embedded в webpack-конфиге патчится через patchWebpackConfigForEmbedded.
Немного просто рвет шаблон что modules это только wmf здесь, а не все вместе)
There was a problem hiding this comment.
Изначально назвал pactchWebpcacConfigFromMf, но следующая строчка заставила переименовать, потому что к mf она как раз отношения не имеет, а нужна только для embedded.
|
Сначала не смог собрать по инструкции Нужно добавить Затем не выполнилась команда yarn build Я думаю что сборка пакета не должна быть завязано на глобальную переменную tsc tsc компилируется под процессор и кладется в папку .bin в node_modules сослаться можно наверное так Везде где используется tsc - мне приiлось заменить на |
|
Запустил. К сожалению не так много времени, чтобы поэксперементировать. Но надеюсь найду время. В целом Дока к модулям очень хорошая, все понятно. Немного смущат нейминг. embded модули - вроде и wmf тоже встроенные |
|
Про нейминг - согласен. Но у меня идей как лучше сделать нету |
|
Минимальную версия ноды не 14 в arui-scripts? |
0157e79 to
24b77d8
Compare
🦋 Changeset detectedLatest commit: b7ac429 The changes in this PR will be included in the next version bump. This PR includes changesets to release 5 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Опубликованные пререлизные версии пакетов |
c76acff to
c623e56
Compare
# Conflicts: # packages/arui-scripts-test/CHANGELOG.md # packages/arui-scripts-test/package.json # yarn.lock
Реализация модулей для приложений, которая дает возможность переиспользовать куски одних проектов на других.
Подробная документация лежит в самом рул-реквесте, но удобнее ее читать вот тут: https://github.com/core-ds/arui-scripts/blob/feat/modules/packages/arui-scripts/docs/modules.md
Мотивация
Зачем городить собственный огород, когда уже есть module federation?
Откуда это все?
Реализация модулей в arui-scripts во многом вдохновлена реализацией модулей у корпоратов. Там она показала себя весьма успешно, на ней реализовано уже не малое кол-во модулей.
Код тут не скопирован 1-к-1 из корпоратской реализации - во многом он является переосмыслением той реализации, с исправлением косяков и созданием более "прямого" api.
Сейчас про переиспользование клиентского кода между проектами (или даже направлениями) говорят практически везде, поэтому было решено вынести существовавшую реализацию на общий уровень.
Как посмотреть
Для того, чтобы посмотреть на модули в рамках arui-scripts есть два "тестовых" проекта - один предоставляющий модули, и второй потребляющий их.
Для локального запуска:
git clone git@github.com:core-ds/arui-scripts.git cd arui-scripts git checkout feat/module yarn install yarn buildДля запуска "поставшика" модулей -
yarn workspace example-modules run startДля запуска "потребителя" -
yarn workspace example run startПроект-потребитель будет запущен на http://localhost:8080
Совместимость
Изменения в arui-scripts являются по сути полностью обратно-совместимыми с предыдущими версиями, изменения могут затронуть только проекты, которые добавят себе в конфигурацию embedded модули и имеют на проекте оверрайды для конфигурации вебпака - вместо одной конфигурации в оверрайдах они будут получать массив конфигураций.
Совместимость с модулями корпоратов
На данный момент реализация НЕ совместима с модулями корпоратов. Реализация такой совместимости - отдельная большая задача, которая должна делаться не в arui-scripts, а в корпоратах. В целом сделать слой совместимости между тем, что есть у корпов и тем, что написано тут - вполне возможно.
На данный момент есть явный недостаток тестов (как на код самого arui-scripts, так и новых пакетов). По возможности буду покрывать тестами то что получится, но уже в следующих итерациях.