2013-06-29 11 views
6

Sto sviluppando la libreria A e la libreria B, B in base a A. Vorrei utilizzare browserify per raggrupparle in modo indipendente, quindi nel mio browser che potevo fare:Browserify per caricare le dipendenze dall'ambito di applicazione globale invece di aspettarsi che vengano raggruppate insieme

var A = require("A"); 
var B = require("B"); 

vorrei raggruppare loro in modo indipendente come sto anche lo sviluppo di libreria C che dipende solo a e se a è incluso in B allora non sarà accessibile da C, e se A è in B e C, ho dei duplicati.

Così iniziamo con biblioteca browserifying A:

browserify -r ./src/A.js:A -o build/A.js 

che funziona perfettamente bene, posso distribuire A e altre persone possono sviluppare le proprie applicazioni con esso.

Poi ho browserify biblioteca B:

browserify -r ./src/B.js:B -o build/B.js 

Ma ora ho un due volte, un essere caricato in modo indipendente nel browser e ancora una volta confezionato con B. Quindi io uso l'opzione -i da browserify per prevenire che venga incluso:

browserify -r ./src/B.js -o build/B.js -i A 

Ma poi, quando B richiede A, si ottiene un oggetto vuoto {} al posto della biblioteca. La libreria A è ancora disponibile dall'ambito globale facendo require ("A").

Ho provato la cosa di esternalizzazione con -x ma non posso più richiedere la libreria dall'ambito globale.

Sono riuscito a ottenere il comportamento che volevo hackerando l'output generato di B, costringendo la risoluzione del modulo a ottenere A da una richiesta precedente, il che mi fa pensare che ci possa essere una soluzione facile, ma non posso Trovalo.

sto usando browserify 2.18.1

+0

-x, --external dovrebbe essere quello che stai cercando. Vedi: https://github.com/substack/node-browserify#multiple-bundles – Epeli

+0

@Epeli, ho provato con l'opzione --external ma sembra non avere alcun effetto poiché A è ancora in B. Ho provato dando il nome del modulo: 'browserify -x A -r ./src/B.js:B -o build/B.js' o puntando al file: 'browserify -x node_modules/A/A.js -r ./src/B.js:B -o costruire/B.js' Qualche idea di cosa -x può accettare come input valido? il mio problema sembra riguardare questo problema su [GitHub di browserify] (https://github.com/substack/node-browserify/issues/404) – Olivier

+0

afaik dovrebbe accettare il percorso di un file js e un nome di modulo. – Epeli

risposta

1

Due modi di vedere le cose:

  • Pensate B come jquery-ui e A come jQuery. Spetta agli utenti includere il jquery nel DOM, se desiderano usare jquery-ui. Quindi, mentre l'edificio B non richiede affatto A.

  • Documentare il fatto che B abbia incorporato A in esso. Gli utenti che usano B dovrebbero semplicemente non includere affatto A. In questo scenario, è ovviamente necessario richiedere A e raggruppare B con A insieme.

  • In generale, se si dispone di 2 fasci browserified, con parti comuni, che vengono importati nella pagina STESSO allora si è già caduto nel problema dell'organizzazione del pacco/dipendenza, quali componenti vanno in quello che, ecc Qualcosa nelle basi di ciò che deve essere rivisto/modificato

Problemi correlati