我正在尝试重构一个使用Browserify的库,通过使用browserify-shim将某些模块从捆绑包中剔除。具体来说,该库使用require("codemirror"),但我想提供一个捆绑包,不包括CodeMirror,而是使用CDN提供的CodeMirror。
因此,我在我的package.json中配置了browserify-shim,如下所示:
"browserify-shim": {
"jquery": "global:jQuery",
"codemirror": "global:CodeMirror"
}
目前为止一切顺利。 require('jquery') 和 require('codemirror') 已经从 browserified 捆绑包中消失,并被预期的代码片段所取代,以从 window 对象中获取 jQuery 和 CodeMirror。
该库还需要一些 CodeMirror 插件,例如 require('codemirror/addon/hint/show-hint.js')。这很好。我想将该插件捆绑在一起。然而,在此插件内部有一个 UMD 包装器,其中包括 require("../../lib/codemirror")。由于这个原因(我认为),Browserify 正在捆绑位于 /node_modules/codemirror/lib/codemirror.js 的 CodeMirror。我希望使用 codemirror 假定中定义的 window.CodeMirror 来解决这个问题,但无法弄清楚。已经尝试了许多变化,包括以下内容:
"browserify-shim": {
"jquery": "global:jQuery",
"codemirror": "global:CodeMirror",
"../../lib/codemirror": "global:CodeMirror",
"codemirror/addon/hint/show-hint.js": {
"exports":null,
"depends":["../../lib/codemirror:CodeMirror"]
}
}
这个问题与 require("../../lib/codemirror") 有关,但我确信我漏掉了什么。
我是从 Gulp 脚本中运行的,但我认为这不应该有任何区别。Browserify 版本 3.38.1。Browserify-shim 版本 3.7.0。
有什么想法吗?