Umi使用webpack5 Module Federation

Umi
小云
265
2023-09-21 10:46:36

Umi 可以使用 webpack5 的 Module Federation 插件來實(shí)現(xiàn)模塊聯(lián)邦。

首先,你需要確保你的 Umi 版本大于或等于 3.4.0。

然后,你需要在你的 Umi 項(xiàng)目中安裝 webpack5 和 @umijs/plugin-mf 插件:

npm install webpack@latest @umijs/plugin-mf@latest

接下來,在你的 Umi 配置文件(.umirc.ts 或 config/config.ts)中添加插件配置:

export default {
plugins: [
['@umijs/plugin-mf'],
],
}

在你的入口文件中,你可以使用 __webpack_init_sharing____webpack_share_scopes__ 全局變量來配置模塊聯(lián)邦:

import { loadMicroApp } from 'qiankun';
// 定義共享范圍
const shareScope = 'umi';
// 初始化模塊聯(lián)邦
if (window.__POWERED_BY_QIANKUN__) {
__webpack_init_sharing__('umi')
.then(() => import(/* webpackIgnore: true */ 'umi'))
.then((umi) => {
// 注冊(cè)共享模塊
umi.registerMicroApps([
{
name: 'app1',
entry: '//localhost:8001',
container: '#container',
activeRule: '/app1',
},
]);
// 啟動(dòng)應(yīng)用
umi.start();
});
} else {
// 啟動(dòng)普通應(yīng)用
loadMicroApp({
name: 'app1',
entry: '//localhost:8001',
container: '#container',
activeRule: '/app1',
props: {},
});
}

這樣,你就可以在 Umi 中使用 webpack5 的 Module Federation 插件來實(shí)現(xiàn)模塊聯(lián)邦了。

0