我想创建一个独立的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.ModuleA
和window.ModuleB
。
documentation没有提供明显的解决方案。
你能帮忙吗?
答案 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