【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

你可能感兴趣的:(【webpack】解决使用umd模式打包后,在vue-cli项目引入为undefined问题)