我正在使用Webpack 4和babel 7进行编译的节点程序包。
在包装上执行以下导出操作时
export default { foo: "bar" }
并且我正在尝试使用以下方式导入它:
import obj from "package"
obj
获取默认名称空间,这意味着obj
如下:
{ default: { foo: "bar" } }
我已经阅读了webpack的following article,它说,非ESM模块现在将获得default
命名空间。
我的问题是,如何以生成ESM模块的方式编译我的包,以便可以正常导入默认属性?
.babelrc
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": 3
}
]
]
}
webpack.config.js
module.exports = {
entry: [__dirname + "/src/index.js"],
output: {
path: __dirname + "/dist",
filename: "index.js",
libraryTarget: "commonjs2"
},
target: "node",
mode: "production",
module: {
rules: [
{
test: /\.js$/,
use: "babel-loader",
exclude: /node_modules/
}
]
},
externals: externals.reduce(
(acc, name) => Object.assign({}, acc, { [name]: true }),
{}
),
plugins: [
new GenerateJsonPlugin("package.json", genPackage())
]
}