Shimming Abhängigkeiten von Abhängigkeiten mit browserify-shim

Ich versuche, eine Bibliothek, die Browserify verwendet, umzugestalten, indem ich bestimmte Module mit browserify-shim aus dem Bundle ausblende. Speziell die Bibliotheksverwendungen erfordern ("codemirror"), aber ich möchte ein Bundle bereitstellen, das CodeMirror nicht enthält, sondern ein Bundle verwendet, das über CDN bereitgestellt wird.

So habe ich browserify-shim config in meinem package.json wie

  "browserify-shim": {
    "jquery": "global:jQuery",
    "codemirror": "global:CodeMirror"
  }

So weit, ist es gut. require ('jquery') und require ('codemirror') sind aus dem browserbasierten Bundle verschwunden und wurden durch das erwartete Code-Snippet ersetzt, um jQuery und CodeMirror vom Fensterobjekt zu entfernen.

Die Bibliothek benötigt auch einige CodeMirror-Add-Ons. Beispiel: require ('codemirror / addon / hint / show-hint.js'). Das ist gut. Ich möchte, dass das Add-On gebündelt wird. In diesem Add-On befindet sich jedoch ein UMD-Wrapper, der require ("../../ lib / codemirror") enthält. Browserify sieht dies und bündelt den CodeMirror aus /node_modules/codemirror/lib/codemirror.js (glaube ich). Ich möchte, dass dies window.CodeMirror verwendet, wie im Codemirror-Shim definiert, kann es aber nicht herausfinden. Habe viele Variationen ausprobiert, einschließlich der folgenden:

  "browserify-shim": {
    "jquery": "global:jQuery",
    "codemirror": "global:CodeMirror",
    "../../lib/codemirror": "global:CodeMirror",
    "codemirror/addon/hint/show-hint.js": { 
      "exports":null,
      "depends":["../../lib/codemirror:CodeMirror"]
    }
  }

Das Erfordernis ("../../ lib / codemirror") geht nicht weg! Ich bin sicher, ich vermisse etwas.

Ich führe dies über ein Gulp-Skript aus, aber ich denke nicht, dass dies einen Unterschied machen sollte. Browserify Version 3.38.1. Browserify-shim Version 3.7.0.

Irgendwelche Ideen

Antworten auf die Frage(2)

Ihre Antwort auf die Frage