2015-03-23 14 views
5

Abbiamo un progetto node.js con alcuni moduli che si estende su più repository Git. I moduli hanno dipendenze tra di loro.Node.JS: utilizzo di più repository Git

Ad esempio:

common modulo risiede nel proprio repository. Il modulo execution risiede in un repository separato e ha una dipendenza (npm) su common.

Così, la struttura di directory in execution comprende (una volta npm install viene eseguito) common sotto node_modules.

Il nostro problema è che quando gli sviluppatori stanno lavorando su execution, a volte devono modificare anche common. Per "vedere" le loro modifiche, hanno una delle due opzioni che utilizziamo attualmente: modificare node_modules/common (che è brutto, non tracciato, ecc.) O modificare il repository common, quindi premere + npm installare le loro modifiche (che , mentre più pulito, è piuttosto ingombrante).

Quello che stiamo chiedendo è se c'è un'alternativa migliore per questo processo di lavoro ...

+0

hai pensato di avere un singolo repository git (monorepo)? – milan

risposta

3

Presumo che li utilizza come dipendenza utilizzando package.json, che consente di richiedere loro con il nome e non il percorso. (Hai anche chicche sulla gestione delle versioni.). Non sono riuscito a trovare alcuna opzione per rimuovere il passaggio di installazione di npm ma ho trovato qualcosa che può rimuovere il passaggio di git push e renderà l'installazione di npm più veloce.

Dipendenze locali.
Utilizzando i percorsi locali come dipendenze che possono essere i vostri altri repository Git, è possibile apportare modifiche direttamente al repository git della propria dipendenza. Questo ti permette di cambiare il codice e testarlo senza spingere. (Anche se devi eseguire nuovamente l'installazione di npm nel modulo principale, che duplicherà la copia di lavoro della tua dipendenza nei moduli del tuo nodo).

Parola di cautela: è necessario fare attenzione a spingere le modifiche finali apportate al codice di dipendenza una volta terminato di lavorare su entrambi, altrimenti altri sviluppatori potrebbero trovarsi in uno stato incoerente.

Come aggiungere le dipendenze locali

"dependencies" : { 
     "here" : "file:./test/git/repo/here#0.0.1" 
} 

Nota che questa caratteristica dipendenza locale è stato aggiunto al NPM nella versione 2.0. Quindi potrebbe essere necessario aggiornare il nodo se non si dispone già di npm 2.0+

+0

Ciao Vishwanath, Grazie. Ci proverò (in particolare, daremo devDependencies in modo che questa configurazione non influenzi la produzione). Una volta convalidato, accetterò la risposta. – Gadi

5

È possibile evitare di modificare il file package.json utilizzando il comando npm link. Questo configurerà automaticamente il pacchetto execution per associare la propria directory node_modules/common al clone locale di common.

Come utilizzare questo metodo

  1. All'interno della vostra common tipo di directory: npm link.Ciò creerà un riferimento globale alla cartella common in npm, identificata da common (supponendo che common sia il nome esatto del pacchetto del nodo).
  2. All'interno del proprio tipo di directory execution: npm link common. Ciò simulerà la cartella node_modules/common nella tua copia locale della directory common.

Quando hai finito di apportare modifiche alla cartella common, è necessario aggiornare il pacchetto on-line, e quindi modificare il package.json di execution per puntare alla versione aggiornata di common.

Preferisco questo metodo rispetto a quello che suggerisce di indicare package.json nel repository locale, perché questo lascia lo package.json in uno stato non valido che si potrebbe accidentalmente commettere e spingere.