Shimming as dependências das dependências com o browserify-shim

Estou tentando refatorar uma biblioteca que usa o Browserify, retirando certos módulos do pacote usando o browserify-shim. Especificamente, a biblioteca usa require ("codemirror"), mas quero fornecer um pacote que não inclua o CodeMirror, mas use um que é fornecido via CDN.

Então, eu tenho a configuração browserify-shim no meu package.json como

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

Por enquanto, tudo bem. require ('jquery') e require ('codemirror') desapareceram do pacote configurável do navegador e foram substituídos pelo trecho de código esperado para pegar o jQuery e o CodeMirror do objeto da janela.

A biblioteca também requer alguns complementos do CodeMirror. Por exemplo, require ('codemirror / addon / hint / show-hint.js'). Isso é bom. Eu quero esse complemento empacotado. No entanto, dentro desse complemento, há um wrapper UMD que inclui require ("../../ lib / codemirror"). O Browserify está vendo isso e está agrupando o CodeMirror em /node_modules/codemirror/lib/codemirror.js por causa disso (eu acho). Eu quero que isso use window.CodeMirror, conforme definido no shim codemirror, mas não pode descobrir isso. Tentei muitas variações, incluindo o seguinte:

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

Esse requerimento ("../../ lib / codemirror") não desaparecerá! Tenho certeza de que estou perdendo alguma coisa.

Estou executando isso a partir de um script Gulp, mas não acho que isso faça alguma diferença. Browserify versão 3.38.1. Versão 3.7.0 do Browserify-shim.

Alguma ideia?

questionAnswers(2)

yourAnswerToTheQuestion