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

Che*_*Lin 8 javascript mocha.js babeljs

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

new webpack.DefinePlugin({
    __DEVTOOLS__: true
})
Run Code Online (Sandbox Code Playgroud)

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

小智 8

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

// config/mocha-setup.js

require('babel-register');

global.__DEVTOOLS__ = true;
Run Code Online (Sandbox Code Playgroud)

然后配置test命令:

// package.json

scripts: {
  test: mocha --require ./config/mocha-setup
}
Run Code Online (Sandbox Code Playgroud)


Jor*_*ing 6

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

global.__DEVTOOLS__ = true;
Run Code Online (Sandbox Code Playgroud)

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