我想创建一个npm库,使用ES导入/导出模块(例如像
我不知道如何配置Babel来实现这一点。我期望选项
当我在
输出结果为:
lodash-es
一样),而不是commonjs。如果我没错的话,提供的代码必须是ES5并具有import/export。我不知道如何配置Babel来实现这一点。我期望选项
targets.esmodules
能解决问题。当我在
calc.js
中编写以下代码时:// calc.js
export function add (a, b) {
const result = a + b
return result
}
以及Babel配置文件.babelrc
:
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"esmodules": true
}
}
]
]
}
运行Babel时:
babel calc.js
输出结果为:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.add = add;
function add(a, b) {
var result = a + b;
return result;
}
这里涉及的是CommonJS (exports.add
)。选项 targets.esmodules
似乎没有任何作用。我应该如何让Babel生成一个ES模块 (export function add
)?或者我是否误解了在npm上传递ES模块的想法?
import
/export
的环境也都理解所有其他ES6语法,因此这个要求真的很奇怪。 - Bergiredux
,es
文件夹包含 esimport
/export
,并且代码已经被转译为 ES5(没有=>
、const
等)。lodash-es
也是如此。如何使用 Babel 实现这一点? - Jos de Jong