巴贝尔的第6版改变了它的功能,export default特别是它与commonjs的关系require.
总而言之,直到babel5,require('module')在给出模块的默认导出的同时,它现在总是返回包含模块的所有导出的模块对象.如果只想要默认值,他/她必须使用require('module').default.
正如这里所解释的,这背后有很好的理由,这个问题的目的不是打破或破解这种行为.
但是,如果正在构建库,他/她通常不希望分发模块,而是分发其库的导出值(例如,函数,内部使用的模块系统).webpack和output.library使用commonjs或AMD时的配置可以很好地解决这个问题.因为先前的babel版本允许使用commonjs进行默认导出,所以babel也与此机制兼容.但事实并非如此:库现在总是提供es6模块对象.
这是一个例子.
SRC/main.js
export default "my lib content";
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
var path = require("path");
var webpack = require("webpack");
module.exports = {
entry: {
lib: [ path.resolve(__dirname, "src/main.js") ],
},
output: {
path: path.join(__dirname, "dist"),
filename: "mylib-build.js",
library: 'myLib'
},
module: {
loaders: [
{
test: /\.js$/,
loader: "babel",
include: path.join(__dirname, "src"),
query: { presets: ['es2015'] }
}
]
} …Run Code Online (Sandbox Code Playgroud)