在 Browserify 中将模块公开为全局变量

Posted

技术标签:

【中文标题】在 Browserify 中将模块公开为全局变量【英文标题】:Expose module as global variable in Browserify 【发布时间】:2016-04-14 12:36:57 【问题描述】:

我有 third-party-module-b 使用 third_party_module_a 全局并且有

require('third-party-module-a');

在入口点。

问题是 third-party-module-a 遵循 UMD 模式,如果检测到模块化环境,则未定义 third_party_module_a 全局。

我正在寻找 Browserify 转换来解决这个问题。

转换应该基本上替换require(如Webpack expose-loader):

(typeof ... ? window : global).third_party_module_a = require('third-party-module-a');

或将require 附加到每个模块的顶部(如Webpack ProvidePlugin):

var third_party_module_a = require('third-party-module-a');

有这样的 Browserify 转换吗?

请注意,exposify transform 的作用正好相反,而且在这里似乎没有用,尽管有这个名字。

【问题讨论】:

【参考方案1】:

不确定你是否看过这个,但他们的 github 上有一个可用的转换列表。

https://github.com/substack/node-browserify/wiki/list-of-transforms

不确定具体是哪一个,但如果您没有看过它,这可能会有所帮助

【讨论】:

感谢您的建议,但这并不是问题的真正答案。当然,在提出问题之前我已经浏览了此列表两次,但一无所获。

以上是关于在 Browserify 中将模块公开为全局变量的主要内容,如果未能解决你的问题,请参考以下文章

合并 JS 流时保留源映射(将 lib 依赖项与 browserify 捆绑包连接)

Python 3和模块中的全局变量[重复]

如何在 crate 中将 Rust 项目设为公开,但在其外部设为私有?

ES6-Babel-Browserify模块化教程

如何在flutter中将token设置为全局变量?所以我可以随时随地访问令牌

测试用 browserify 打包的模块?