我试图重构一个使用Browserify的库,通过使用browserify-shim将某些模块从包中擦除。具体来说,库使用require(" CodeMirror "),但是我想提供一个包,它不包括CodeMirror,而是使用通过CDN提供的包。
所以我在我的package.json中有了浏览器-shim
"browserify-shim": {
"jquery": "global:jQuery",
"codemirror": "global:CodeMirror"
}到目前一切尚好。require(' jQuery ')和require(' CodeMirror ')已经从浏览器序列化的包中消失了,取而代之的是期望的代码片段来从窗口对象中获取jQuery和CodeMirror。
库还需要一些CodeMirror加载项.例如,require('codemirror/addon/hint/show-hint.js').这很好。我要把那个附加的东西打包好。但是,在这个插件中有一个UMD包装器,其中包含了require("../../lib/codemirror")。Browserify看到了这一点,并因此将CodeMirror捆绑在/node/codemirror/lib/codemirror.js中(我认为)。我希望这样做可以使用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"]
}
}这个要求(“./../lib/codemirror”)不会消失!我肯定我漏掉了什么。
我是从一个Gulp脚本中运行的,但我不认为这会有任何不同。浏览3.38.1版。Browserify-shim版本3.7.0。
有什么想法吗?
发布于 2014-10-27 20:29:32
如果您使用browserify-shim添加了{global: true},那么它也应该应用于依赖项的依赖项(等等),希望这样做可以满足您的需要。
假设您在Gulpfile中使用原始的浏览器化,而不是:
b.transform('browserify-shim');做:
b.transform({global: true}, 'browserify-shim');如果您使用的是gulp-browserify,我不确定是否有任何方法来指定全局转换。
发布于 2016-03-16 13:46:28
{global: true}为我工作..。为什么这不是默认的呢?
https://stackoverflow.com/questions/26024912
复制相似问题