业务背景
我们基于amis官方包,额外封装了上百个业务组件,全局动作,事件以及过滤器,然后将封装后的包提供给业务方使用
由于amis功能特别丰富,官方包依赖的插件比较多,这种情况存在2个问题
- 构建通常在5分钟左右,比较耗时,降低了发布效率
- 构建出来的包经过gizp压缩后超过了2M,影响首次加载时间
为了减小首包大小,我们采用umd方式构建依赖包,类似于官方的sdk模式
- 使用webpack的splitchunk功能,将大的依赖拆分成单独的子包,加载页面时并行加载这些子包,以提高首次加载时间
- 将产物构建成umd格式部署到云上,业务方直接引用cdn链接,amis组件不参与编译时构建,以减少构建时间
存在的问题
运行过程中发现一个问题,弹框功能失效了(dialog, drawer等)
- 控制台没有报错
- DOM中没有任何弹框相关的节点
- 无论是事件触发的,还是直接硬编码的type: 'dialog'都一样
请各位大佬帮忙看看呢,不知道从哪儿开始排查,感谢
webpack配置如下
const createCacheGroups = (modules) => {
const cacheGroups = {};
modules.forEach((module) => {
cacheGroups[module] = {
test: new RegExp(`[\\/]node_modules[\\/]${module}[\\/]`),
name: module,
chunks: 'all',
};
});
return cacheGroups;
};
{
output: {
library: {
type: 'umd',
name: 'zmnAmis'
}
},
externals: {
react: 'React',
'react-dom': 'ReactDOM',
},
optimization: {
minimize: false,
splitChunks: {
cacheGroups: createCacheGroups([
'amis',
'amis-core',
'amis-ui',
'antd',
'lodash',
'moment',
'moment-timezone',
'jquery',
]),
},
},
}
1条答案
按热度按时间nfg76nw01#
ps: 希望官方也可以直接提供umd格式的包