mfe-federation-config
v1.0.1
Published
Shared Module Federation configuration: manifest, webpack base factory and types generator
Maintainers
Readme
mfe-federation-config
Общая конфигурация Module Federation для системы микрофронтендов (Webpack Module Federation: React host/remote + Vue 3 remote).
Единый источник правды о федерации, который потребляют приложения
host, remote и vue.
Содержимое
src/federation.manifest.js— манифест федерации:remotes(URL контейнеров из env-переменныхREMOTE_URL/VUE_URLс localhost-дефолтами),exposes(какие файлы экспонирует каждое приложение +kind:react/vue/runtime),consumes(кто кого потребляет) и хелперыwebpackRemotes(app)/webpackExposes(app).src/webpack.base.js— фабрикаcreateConfig(...)и пресеты шаред-синглтоновsharedReact(react,react-dom) /sharedVue(vue). Централизуетoutput.publicPath: "auto",output.cleanи настройки dev-сервера (порт,historyApiFallback,allowedHosts, CORS-заголовки,client.webSocketURL).src/bin/generate-federation-types.js— CLI, генерирующийsrc/types/federation.d.tsдля текущего приложения (ambient-декларации потребляемых федеративных модулей). Имя приложения выводится из рабочей директории.
Использование
const { ModuleFederationPlugin } = require('webpack').container;
const {
createConfig,
sharedReact,
webpackRemotes
} = require('mfe-federation-config');
module.exports = createConfig({
ModuleFederationPlugin,
name: 'host',
port: 3000,
remotes: webpackRemotes('host'),
shared: sharedReact
/* ... */
});Генерация федеративных типов (запускать из каталога приложения):
npx generate-federation-typesПеременные окружения
| Переменная | Значение по умолчанию | Где используется |
| ------------ | ----------------------- | ---------------- |
| REMOTE_URL | http://localhost:3001 | host |
| VUE_URL | http://localhost:3002 | remote |
URL запекаются в бандл на этапе сборки (Docker ARG/ENV в CI).
Лицензия
MIT © AlexDyatlov
