webpack把es6写的library打包成一个UMD文件,使用global var的方式来调用这个打出来的bundle(ukulele.js)会出现一个很奇怪的问题:
比如我后
我必须使用Ukulele.Ukulele才能真正调用到function,外面会被包裹一层叫Ukulele属性。。。我们明明export的是一个function啊。。。请知道的朋友们解答,如何才能直接可以new Ukulele()呢 而不是 new Ukulele.Ukulele()
entry 如下 (es6)
function Ukulele(){
//balabala
}
export {Ukulele}
webpack-config.js如下
全选复制放进笔记var webpack = require('webpack');
var path = require('path');
var libraryName = 'Ukulele';
var config = {
entry: __dirname + '/src/ukulele/core/Ukulele.js',
devtool: 'source-map',
output: {
path: __dirname + '/dist',
filename: 'ukulele.js',
library: libraryName,
libraryTarget: 'umd',
umdNamedDefine: true
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /(node_modules|bower_components|test)/,
query: {
presets: ['es2015']
}
},
]
},
resolve: {
root: path.resolve('./src'),
extensions: ['', '.js']
}
}
module.exports = config;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
output: {
path: __dirname + '/dist',
filename: 'ukulele.js',
library: libraryName, //不要设置libraryName就行了
libraryTarget: 'umd',
umdNamedDefine: true
},