如何创建直接导出到 window 的独立 browserify 包?

How to create standalone browserify bundle exporting directly to window?

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

这样做,browserify 会忽略 window:

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 没有提供明显的解决方案。

你能帮忙吗?

这应该有效:

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

您也可以使用 window 而不是 global

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

与其强制模块进入全局范围(一些开发人员可能由于冲突不希望它们存在),而是这样做:

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

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

TheModulesAB.A //module-a.js

TheModulesAB.B //module-b.js