Javascript 我可以使用Babel传输到ES5,但保留导入/导出而不是commonjs吗?
我想创建一个npm库,它使用ES导入/导出而不是commonjs来交付模块(例如Javascript 我可以使用Babel传输到ES5,但保留导入/导出而不是commonjs吗?,javascript,babeljs,es6-modules,Javascript,Babeljs,Es6 Modules,我想创建一个npm库,它使用ES导入/导出而不是commonjs来交付模块(例如lodash ESdoes)。如果我没有弄错的话,交付的代码必须是ES5,并且具有导入/导出功能 我不知道如何配置Babel来做到这一点。我认为这一选择应该会奏效 当我在calc.js中有以下代码时: //calc.js 导出功能添加(a、b){ 常数结果=a+b 返回结果 } 和babel配置。babelrc: { "presets": [ [ "@babel/preset-env",
lodash ES
does)。如果我没有弄错的话,交付的代码必须是ES5,并且具有导入/导出功能
我不知道如何配置Babel来做到这一点。我认为这一选择应该会奏效
当我在calc.js
中有以下代码时:
//calc.js
导出功能添加(a、b){
常数结果=a+b
返回结果
}
和babel配置。babelrc
:
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"esmodules": true
}
}
]
]
}
运行babel时:
babel calc.js
输出为:
“严格使用”;
Object.defineProperty(导出,“\uu esModule”{
值:true
});
exports.add=添加;
功能添加(a、b){
var结果=a+b;
返回结果;
}
这是commonjs(exports.add
)。选项targets.esmodules
似乎没有效果。如何让Babel生成es模块(export function add
)?还是我误解了在npm上交付ES模块的想法?看起来是基于您确实应该传输一个只有导入
/导出
的版本,但已经传输了所有其他非ES5语法。他们说了一些类似的话。此格式假定您的用户正在使用诸如Rollup或Webpack之类的工具,这些工具本机支持导入
/导出
语句,但随后可能会将它们转换为ES5兼容语法,而无需通过Babel运行库
看起来Redux特别做到了这一点,然后在他们的
.babelrc
文件中告诉Babel不要传输模块语句。我不清楚Lodash是如何管理它的,因为我在repo中没有看到任何构建脚本。“如果我没有弄错,交付的代码必须是ES5并且具有导入/导出功能。”-您可能弄错了。任何理解导入
/导出
的环境也理解所有其他ES6语法,所以这个要求真的很奇怪。谢谢。这也是我的假设,但我收到了相当多的问题报告。JS项目通常从不从依赖项传输代码,只从项目本身的源代码传输代码。因此,当我发布一个需要透明的库时,它会出现问题。查看,es
文件夹包含es导入
/导出
,代码被传输到ES5(无=>
,常量
等)。我也是。如何用巴贝尔做到这一点?耶皮,这确实是缺失的一环,非常感谢罗伯特发现了这一点!我现在有了一个概念验证,可以使用Babel配置{“预设”:[[“@Babel/preset env”,“modules:false}]}
。