在babel编译时是否有方法注入或忽略全局变量?

Is there any approach to inject or ignore global variables when babel compiling?

本文关键字:全局变量 注入 有方法 babel 编译 是否      更新时间:2023-09-26

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

new webpack.DefinePlugin({
    __DEVTOOLS__: true
})

但是在我的摩卡测试中,我只想使用babel/register,不想在我的测试中使用wepack。是否有任何方法注入全局变量,就像webpack DefinePlugin或至少忽略全局变量时,它的编译?

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

// config/mocha-setup.js
require('babel-register');
global.__DEVTOOLS__ = true;

然后配置test命令:

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

使用Mocha,您可以将属性分配给global对象,我认为这将实现您想要的:

global.__DEVTOOLS__ = true;

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