Próbuję zrestrukturyzować bibliotekę, która korzysta z Browserify, zmieniając niektóre moduły z pakietu za pomocą browserify-shim. W szczególności biblioteka używa require ("codemirror"), ale chcę dostarczyć pakiet, który nie zawiera CodeMirror, ale raczej użyje tego, który jest dostarczany przez CDN.Zmniejszanie zależności zależności za pomocą browserify-shim
Więc mam browserify podkładkę-config w moim package.json jak
"browserify-shim": {
"jquery": "global:jQuery",
"codemirror": "global:CodeMirror"
}
tej pory tak dobrze. require ('jquery') i require ('codemirror') zniknęły z pakietu z przeglądarką i zostały zastąpione przez oczekiwany fragment kodu, aby pobrać jQuery i CodeMirror z obiektu window.
Biblioteka wymaga również niektórych dodatków CodeMirror. Na przykład require ("codemirror/addon/hint/show-hint.js"). W porządku. Chcę, aby ten dodatek był dołączony. Jednak w tym dodatku znajduje się opakowanie UMD, które zawiera żądanie ("../../ lib/codemirror"). Browserify widzi to i łączy w sobie CodeMirror z /node_modules/codemirror/lib/codemirror.js z tego powodu (myślę). Chcę tego używać window.CodeMirror jak zdefiniowano w codemirror shim, ale nie można go znaleźć. Próbowaliśmy wiele odmian tym następujące:
"browserify-shim": {
"jquery": "global:jQuery",
"codemirror": "global:CodeMirror",
"../../lib/codemirror": "global:CodeMirror",
"codemirror/addon/hint/show-hint.js": {
"exports":null,
"depends":["../../lib/codemirror:CodeMirror"]
}
}
zależnymi ("../../ lib/CodeMirror") nie będzie odejdź! Jestem pewien, że czegoś mi brakuje.
Używam tego ze skryptu Gulp, ale nie sądzę, że powinno to mieć znaczenie. Wersja Browserify 3.38.1. Browserify-shim wersja 3.7.0.
Wszelkie pomysły?
Wygląda na to, że przeglądarka-shim mogła być niewłaściwa. Opcji Browserify bundleExternal = false może rozwiązać problem. Badanie ... –
bundleExternal = false nie jest pełną odpowiedzią, ponieważ pozostawia początkowe "wymagane" instrukcje w miejscu. Zatem nadal potrzebna jest opcja browserify-shim, jak w pierwszym przykładzie. Ale to pomaga. Dzięki temu ustawieniu mogę bezpośrednio .require ("codemirror/addon/hint/show-hint.js") przed dołączeniem do skryptu Gulp, aby uzyskać dodatek, ale zewnętrzne wymagania CodeMirror zostaną pominięte, wydaje się . –
Wygląda na to, że w najnowszej wersji przeglądarki istnieje opcja zastosowania {global: true} do transformacji shift, co spowoduje, że będzie działała na zależnościach! Dzięki temu możemy z powodzeniem zasymulować żądanie ("../../ lib/codemirror"). –