.babelrc
这可能是 Babel CLI 中的一个错误(我使用的是 6.24.1),但是当源数据通过管道传输到它时,Babel 似乎并不适用。
例子:
鉴于此源文件,foo.js
:
const foo = 10;
好:这个命令做你认为应该做的事,.babelrc
在同一个目录中,其中包含es2015
预设:
babel foo.js --out-file foo.classic.js
这导致foo.classic.js
,具有正确转译的内容:
"use strict";
var foo = 10;
坏:这个命令没有做你期望的事情:
cat foo.js | babel --out-file foo2.classic.js
这导致foo2.classic.js
,内容不变:
const foo = 10;
好:此命令符合您的预期,因此它不是错误的实际配置:
cat foo.js | babel --presets es2015 --out-file foo3.classic.js
结果foo3.classic.js
:
"use strict";
var foo = 10;
分析:在管道的情况下,Babel 显然是从管道中读取数据并将其传递出去(因为输出文件已创建),但 Babel.babelrc
从管道获取数据时似乎完全忽略了。
作为参考,这.babelrc
是应该应用的:
{
"presets": [ "es2015" ]
}
为什么要使用管道?
对于它的价值,您可能想知道,“为什么将输入通过管道传输到 Babel?为什么不只使用文件?”
好吧,一方面,管道是受支持的功能,所以它应该“正常工作”。
但在我的例子中,传递给 Babel 的源文件本身就是代码生成链的结果,该链生成有效的 ES6 代码作为输出。最好不必让代码生成器输出一个~temp.js
中间文件,然后再将其删除;如果管道按预期工作会好得多。
问题:
这是一个错误吗?如果是,有没有人知道比发出一个名为 的文件~temp.js
,将其传递给 Babel,然后删除它更好的解决方法?