如何创建独立的browserify bundle直接导出到窗口?

Raz*_*man 11 browserify

我想创建一个独立的browserify包,它将导出的对象直接附加到window对象,而不是嵌套在附加到的包装器对象下window.

这样做,browserify忽略窗口:

browserify main.js --standalone window > bundle.js
Run Code Online (Sandbox Code Playgroud)

main.js文件如下所示:

var ModuleA = require('./module-a.js');
var ModuleB = require('./module-b.js');

module.exports = {
  ModuleA: ModuleA,
  ModuleB: ModuleB
}
Run Code Online (Sandbox Code Playgroud)

我希望两个模块直接在全局命名空间中公开:window.ModuleAwindow.ModuleB.

文件没有提供明显的解决方案.

你能帮我吗?

Spr*_*cat 8

这应该工作:

global.ModuleA = require('./module-a.js');
global.ModuleB = require('./module-b.js');
Run Code Online (Sandbox Code Playgroud)

您也可以使用window而不是global.


pos*_*abs 7

的参数--standalone应该是您要分配给模块的全局变量的名称。在您的示例中,您使用的是“窗口”,这可能会导致站点中发生一些奇怪的事情。

而不是将模块强制进入全局范围(由于冲突,某些开发人员可能不希望将模块放到全局范围内),而是执行以下操作:

browserify main.js --standalone TheModulesAB > bundle.js

然后,您将能够bundle.js像这样加载和引用您的模块:

TheModulesAB.A //module-a.js

TheModulesAB.B //module-b.js
Run Code Online (Sandbox Code Playgroud)