【webpack】解决使用umd模式打包后,在vue-cli项目引入为undefined问题

最近在编写公共仓库代码,遇到问题如下:
我们写一个最小用例,姑且把它叫做Foo,编写入口文件:index.js

export default {
  Foo: { a:1, b:2 }
}

使用了umd格式打包这个index.js,output配置如下:

module.exports = {
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: '[name].js',
    library: 'Foo',
    libraryTarget: 'umd',
    libraryExport: 'default',
    umdNamedDefine: true,
  },
}

打包完成,在另一个vue-cli构建的项目中,直接引入打包后的文件作为测试,打印'Foo'居然是undefined:

import Foo from 'path/to/dist/index.js'
console.log(Foo) // undefined

经过排查:不是Webpack打包配置的问题,而是vue-cli项目中默认的babel配置,把这个Foo当成了项目内部文件。即当你使用import Foo from 'xxx'时,babel会检查目标文件(也就是'dist/index.js')是否有export default,然而打包后的文件一般不再二次处理了,需要将其添加到忽略项中

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  //添加忽略项
  ignore: [
    '../../dist',
  ]
}

done

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容