【发布时间】:2016-10-01 17:21:17
【问题描述】:
我有一个项目正在使用 babel-register 在 Node 6.6 项目中需要该模块时将 ES6 源动态转换为 ES5。我已经阅读了 babel-register hooks into Node's require 函数,以便在您尝试加载文件时对其进行转译,但我并不总是清楚哪些文件会受到该更改的影响。
我在编写测试时经常会遇到这个问题:只是我的生产代码被转译,还是测试代码也被转译?这让我想到了一个更普遍的问题,这就是本文的主题帖子:
我如何知道 Babel 何时实际运行,以及哪些文件正在被转译?
示例代码
假设我有这样的生产类,它们是用 ES6 语法编写的
//src/greeter.js
export default class Greeter {
sayHello() {
return 'Hello World';
}
}
并且 Babel 被配置为这样转换 (.babelrc)
{
"presets": ["es2015"]
}
然后是一些测试代码
//features/step_definitions/greeter_steps.js
import Greeter from '../../src/greeter'; //Causes greeter.js to be transpiled
import expect from 'expect';
var stepWrapper = function() {
//Does Babel try to transpile this code too?
this.Given(/^a greeter$/, function() {
this.greeter = new Greeter();
});
this.When(/^I ask it for a general greeting$/, function() {
this.greeting = this.greeter.sayHello();
});
this.Then(/^it should greet the entire world$/, function() {
expect(this.greeting).toEqual('Hello World');
});
};
module.exports = stepWrapper;
所有这些都像这样在 Node 上运行
cucumberjs --compiler js:babel-core/register
Example code is available here,如果有帮助的话。
【问题讨论】:
标签: javascript node.js babeljs cucumberjs babel-register