我正在尝试重构一个使用Browserify的库,方法是使用browserify-shim从bundle中填充某些模块。具体来说,库使用require(“codemirror”)但我想提供一个不包含CodeMirror的包,而是使用通过CDN提供的包。
所以我在package.json中有了browserify-shim配置,如
"browserify-shim": {
"jquery": "global:jQuery",
"codemirror": "global:CodeMirror"
}
到目前为止一切顺利。 require('jquery')和require('codemirror')已从浏览器化的bundle中消失,并被预期的代码片段取代,以从窗口对象中获取jQuery和CodeMirror。
该库还需要一些CodeMirror附加组件。例如require('codemirror / addon / hint / show-hint.js')。没关系。我想要捆绑的附加组件。但是,在此附加组件中是一个包含require(“../../ lib / codemirror”)的UMD包装器。 Browserify正在看到这一点,并且正在捆绑CodeMirror来自/node_modules / codemirror / lib / mirrormirror.js因为这个(我认为)。我想让它使用在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"]
}
}
那个要求(“../../ lib / codemirror”)不会消失!我确定我错过了什么。
我是从Gulp脚本运行的,但我认为这不应该有任何区别。 Browserify版本3.38.1。 Browserify-shim版本3.7.0。
有什么想法吗?
答案 0 :(得分:11)
如果您使用browserify-shim
添加{global: true}
,则应将其应用于您的依赖项'依赖性(依此类推),这应该有希望做你想做的事。
假设您在Gulpfile中使用原始browserify,而不是:
b.transform('browserify-shim');
做的:
b.transform({global: true}, 'browserify-shim');
如果你正在使用gulp-browserify
,我不确定是否可以指定全局转换。
答案 1 :(得分:-1)
totalRent_dict = {}
for d in data:
accountLabelType = None
for (date, details) in d['nightlyDetails'].items():
for (key, value) in details.items():
if key == 'accountLabelType':
accountLabelType = value
if accountLabelType:
try:
totalRent_dict[accountLabelType] += d['totalRent']
except KeyError:
totalRent_dict[accountLabelType] = d['totalRent']
对我有用......为什么这不是默认值?