Zajmuję się tworzeniem biblioteki A i biblioteki B, B w zależności od A. Chciałbym, używając przeglądarki, aby połączyć je niezależnie, więc w przeglądarce mogłem zrobić:Przeglądaj, aby załadować zależności z wymaganego zakresu globalnego, zamiast oczekiwać, że zbiorą się razem
var A = require("A");
var B = require("B");
chciałbym połączą je niezależnie jak ja również rozwój biblioteki C, która zależy tylko od a i jeśli a jest zawarty w B to nie będzie dostępny przez C, a jeśli A jest w B i C, mam duplikaty.
Więc zacznę z biblioteki browserifying A:
browserify -r ./src/A.js:A -o build/A.js
Który działa perfekcyjnie, mogę dystrybuować i inni ludzie mogą rozwijać swoje aplikacje z nim.
Potem browserify B Biblioteka:
browserify -r ./src/B.js:B -o build/B.js
Ale mam teraz dwa razy, A są ładowane niezależnie w przeglądarce i ponownie pakowane B. Więc używać opcji -i z browserify aby zapobiec nie został uwzględniony:
browserify -r ./src/B.js -o build/B.js -i A
Ale wtedy, gdy B wymaga A, otrzymuje pusty obiekt {} zamiast biblioteki. Biblioteka A jest nadal dostępna w zasięgu globalnym, wykonując polecenie require ("A").
Próbowałem użyć eksternalizacji przez -x, ale nie mogę już wymagać mojej biblioteki od globalnego zakresu.
Udało mi się uzyskać pożądane zachowanie poprzez zhackowanie wygenerowanego wyjścia B, co zmusiło rozdzielczość modułu do uzyskania A z wcześniejszego wymagania, co powoduje, że myślę, że może być łatwe rozwiązanie, ale nie mogę Znajdź to.
Używam browserify 2.18.1
-x, --external powinno być tym, czego szukasz. Zobacz: https://github.com/substack/node-browserify#multiple-bundles – Epeli
@Epeli, próbowałem z opcją --external, ale wydaje się, że nie ma żadnego efektu, ponieważ A jest nadal w B. Próbowałem, podając nazwa modułu: 'browserify -x A -r ./src/B.js:B -o build/B.js' lub poprzez wskazanie pliku: 'browserify -x node_modules/A/A.js -r ./src/B.js:B -o budować/B.js' Każdy pomysł co -x może zaakceptować jako prawidłowe dane wejściowe? Mój problem wydaje się odnosić do tego problemu na [Browser Browser] (https://github.com/substack/node-browserify/issues/404) – Olivier
afaik powinien zaakceptować ścieżkę do pliku js i nazwę modułu. – Epeli