我正在尝试通过使用 browserify-shim 将某些模块从包中填充出来来重构使用 Browserify 的库。具体来说,该库使用 require("codemirror") 但我想提供一个不包含 CodeMirror 的包,而是使用通过 CDN 提供的包。
所以我的 package.json 中有 browserify-shim 配置,比如
"browserify-shim": {
"jquery": "global:jQuery",
"codemirror": "global:CodeMirror"
}
到目前为止,一切都很好。require('jquery') 和 require('codemirror') 已从 browserified 包中消失,并被预期的代码片段替换,以从窗口对象中获取 jQuery 和 CodeMirror。
该库还需要一些 CodeMirror 附加组件。例如 require('codemirror/addon/hint/show-hint.js')。没关系。我想捆绑那个附加组件。然而,在这个附加组件中有一个包含 require("../../lib/codemirror") 的 UMD 包装器。Browserify 看到了这一点,并因此从 /node_modules/codemirror/lib/codemirror.js 捆绑了 CodeMirror(我认为)。我希望它改用 codemirror shim 中定义的 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。
有任何想法吗?