amis 构建umd包后弹框功能失效

r9f1avp5  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(76)
业务背景

我们基于amis官方包,额外封装了上百个业务组件,全局动作,事件以及过滤器,然后将封装后的包提供给业务方使用

由于amis功能特别丰富,官方包依赖的插件比较多,这种情况存在2个问题

  1. 构建通常在5分钟左右,比较耗时,降低了发布效率
  2. 构建出来的包经过gizp压缩后超过了2M,影响首次加载时间

为了减小首包大小,我们采用umd方式构建依赖包,类似于官方的sdk模式

  1. 使用webpack的splitchunk功能,将大的依赖拆分成单独的子包,加载页面时并行加载这些子包,以提高首次加载时间
  2. 将产物构建成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',
      ]),
    },
  },
}
nfg76nw0

nfg76nw01#

ps: 希望官方也可以直接提供umd格式的包

相关问题