如果各位大神有更好的解决方案,或者有什么不足的地方,还请不吝赐教。
一、问题描述
多个以@vue/composition-api为基础开发的组件,在应用环境中打包时,出现非单例的情况。
二、基础环境
1. 组件环境
组件中不打包vue和@vue/composition-api
- webpack(打包为umd)
- vue2
- @vue/composition-api
- typescript
2. 应用环境
- vuecli 5.0
- vue2
- @vue/composition-api
三、调查结果
查看应用环境打包结果发现,包中同时引入了@vue/composition-api的module包和commonjs包,才出现了非单例的情况。
四、临时解决方案
因为使用了webpack,调查了半天,没找到如何打包mjs,又没时间改rollup打包,就临时强制按需引用打包了一个使用@vue/composition-api的module的module的包。
五、教训
打包环境选择时,要尽量考虑到应用环境中可能使用的引用方式,尽量多打几个版本的包,以满足更多的环境,减少这种引用导致的bug。