使用browserify-shim填充依赖项的依赖关系

时间:2014-09-24 19:27:11

标签: browserify codemirror browserify-shim

我正在尝试重构一个使用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。

有什么想法吗?

2 个答案:

答案 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']

对我有用......为什么这不是默认值?