在编译babel时,有没有注入或忽略全局变量的方法?

时间:2015-08-18 03:52:21

标签: javascript mocha babeljs

我的源代码中有一个__DEVTOOLS__个全局变量。通常我使用webpack DefinePlugin将其定义为布尔值。

new webpack.DefinePlugin({
    __DEVTOOLS__: true
})

但在我的mocha测试中,我只想使用babel/register而不想在我的测试中使用wepack。是否有任何方法可以像webpack DefinePlugin一样注入全局变量,或者在编译时至少忽略全局变量?

2 个答案:

答案 0 :(得分:6)

使用Mocha,您可以为global对象分配属性,我认为这将达到您想要的效果:

global.__DEVTOOLS__ = true;

你可以把它放在任何你想要的地方,例如一个before块,但是如果您已经在测试之前加载了helper.jssetup.js文件,那么这将是一个放置它的好地方。

答案 1 :(得分:5)

我最近遇到了这个问题,并将global.__DEVTOOLS__ = true;添加到before块,或者在测试中的任何位置,都不适用于我。我最终解决了这个问题,创建了一个单独的脚本,通过--require标志传递给mocha cli。

// config/mocha-setup.js

require('babel-register');

global.__DEVTOOLS__ = true;

然后配置测试命令:

// package.json

scripts: {
  test: mocha --require ./config/mocha-setup
}