webpack配置如下啦:
const webpack = require('webpack')
const path = require('path')
const config = {
context: path.resolve(__dirname, '../src'),
entry: '../src/app.js',
output: {
path: path.resolve(__dirname, '../dist'),
filename: 'bundle.js'
},
module: {
rules: [{
test: /\.js$/,
include: path.resolve(__dirname, '../src'),
use: [{
loader: 'babel-loader',
options: {
presets: ['env']
}
}]
}]
},
plugins:[
]
}
module.exports = config
使用如上的webpack
配置,打包app.js
如下:
import a from './a'
import b from './b'
export{
a,
b
}
打包完发布npm
,另一个项目使用该模块包,import {a} from xxx
,却拿不到a或者b的值
分别为undefined
,这是为啥?(上述打包一切正常,已使用babel
转换,依赖引入的也是转换后的es5
代码)求指教!
这个问题查了会资料,就自问自答了,以供参考:
首先,
webpack
,默认打包结构是一个闭包,然后模块是作为闭包的参数列表,是个数组,每一项也是个匿名函数,具体参考链接解决方案:
参考官方文档:https://webpack.js.org/config...
有一个
libraryTarget
的属性,作用是定义模块运行的方式,将它的值设为umd
,则问题解决!