【发布时间】:2016-06-19 23:25:29
【问题描述】:
我有一个非常简单的 Webpack 和 Babel 设置,用于一个小型库。
之前,我有以下架构来生成库的 ES5 版本:
module.exports.lib = (function () {
/* private part of library here */
return {
... /* public part of library here */
}
})();
以这种方式一切正常,我什至在我的库中有一些 ES6 功能,例如箭头函数,一切正常。然而,我决定改变我对 ES6 类的方法,这样:
export default class Library {
}
现在,当我尝试这样做时:
var library = new Library();
我知道库没有定义。即使只是评估 Library 也会返回 undefined。
所以我所做的是将使用该库的文件转换为执行 import Library from 'libraryfile.js' 的 ES6 文件,然后它又可以工作了。
但是,我真的希望我的输出库仍然可以像以前一样在带有<script> 标签的常规 ES5 中使用。这可能吗?
这是我的 webpack 配置文件:
module.exports = {
entry: {
pentagine: "./lib/pentagine.js",
demos: ["./demos/helicopter_game/PlayState.js"]
},
output: {
path: __dirname,
filename: "./build/[name].js",
libraryTarget: 'umd'
},
module: {
loaders: [
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}
]
}
};
【问题讨论】:
-
“但是,我真的希望我的输出库仍然是有效的 ES5。这可能吗?” Babel 已经做到了...
-
@FelixKling 是的,它是有效的 ES5,但我的意思是我希望它可以被带有普通脚本标签的常规 ES5 代码使用。我将编辑问题。
-
这可能会有所帮助:stackoverflow.com/q/33678869/218196
-
这对我有所帮助,因为我学到了很多东西,但它似乎与使用
add-module-exports插件无法解决问题的问题不同。 -
你解决了这个问题我也面临同样的错误吗?
标签: javascript ecmascript-6 webpack babeljs