当在 Node 6.6 项目中需要该模块时,我有一个项目用于将babel-register
ES6 源动态转换为 ES5。我已经阅读babel-register
了 Noderequire
函数的挂钩,以便在您尝试加载文件时对其进行转译,但我并不总是清楚哪些文件会受到该更改的影响。
当我编写测试时,这个问题经常出现:是只有我的生产代码被转译,还是测试代码也被转译?这让我想到了一个更普遍的问题,这是这篇文章的主题:
我如何知道 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;
所有这些都像这样在节点上运行
cucumberjs --compiler js:babel-core/register
如果有帮助,可以在此处获得示例代码。