如何创建直接导出到 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.ModuleA
和 window.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
我想创建一个独立的 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.ModuleA
和 window.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