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

时间:2015-09-16 09:13:47

标签: browserify

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

执行此操作,browserify忽略窗口:

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

main.js文件如下所示:

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

module.exports = {
  ModuleA: ModuleA,
  ModuleB: ModuleB
}

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

documentation没有提供明显的解决方案。

你能帮忙吗?

2 个答案:

答案 0 :(得分:7)

这应该有效:

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

您也可以使用window代替global

答案 1 :(得分:4)

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

不要强迫模块进入全局范围(某些开发人员可能因为冲突而不希望它们出现),请执行以下操作:

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

然后您就可以加载bundle.js并像这样引用您的模块:

TheModulesAB.A //module-a.js

TheModulesAB.B //module-b.js