2014-05-07 9 views
5

Sono una specie di novizio per quanto riguarda lo npm, quindi per favore aiutatemi.installazione di npm dal registro privato con fallback a un repository git URL

Diciamo che ho alcuni moduli su cui sto lavorando utilizzando un repository git per ognuno di essi e ho anche installato sinopia per avere un registro privato. Il problema è che siamo 2 squadre. Una squadra in una città e l'altra è alla fine del mondo. Nel mio team ho installato il registro privato per essere disponibile nella rete locale. Il problema qui è che quando spingiamo su git, l'altro team non ha un proprio registro privato, e anche se lo facessero avrebbero bisogno di pubblicare ogni versione di ogni modulo nel loro registro privato. Un altro problema è che non possiamo (e non vogliamo) rendere pubblico il server sinopia tramite IP.

Ora la domanda è: come possiamo configurare il package.json/npm per gestire le dipendenze sia dal Registro di sistema privato (se il registro risponde) e il repository git anche (se il registro privato non risponde - aka doesn esiste -).

So che potremmo impostare ciascuna dipendenza in modo che faccia riferimento a un tag git/ramo/commit ma vogliamo anche utilizzare il registro se possibile.

UPDATE

Quindi, in pratica avrei bisogno di un package.json che avrebbe sapere che se questa parte non riesce:

"dependencies": { 
    "app.core": "0.1.1" 
} 

perché il Registro privata non è installato o non è disponibile, potrebbe ancora caricare la dipendenza da qualcosa di simile:

"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 

Si noti inoltre che preferirei qualcosa che può essere spinto nel repository git in modo che nessuno dei team debba modificare localmente il file package.json.

Spero che qualcuno possa aiutare.

+0

Più registro non è ancora stato eseguito. Vedere [questo] (https://github.com/npm/npm/issues/1401) per aiuto. – user568109

+0

@ user568109 Grazie, ma questo non è quello che mi serviva. Avevo bisogno di avere un registro privato e se questo non esiste le dipendenze verrebbero installate da un repository "git + ssh: //[email protected]/xxx/yyy.git#000" – helly0d

+0

@ user568109 Ho aggiornato il domanda per rendere più chiaro ciò che cerco di ottenere. – helly0d

risposta

1

L'unico modo che ho trovato a lavorare per il momento è di avere un package.json come questo:

"scripts": { 
    "postinstall" : "node fallbackDependencies.js" 
} 
"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 
"optionalDependencies": { 
    "app.core": "0.1.1" 
} 

e nel file fallbackDependencies.js per eseguire uno script che prende tutte le dipendenze dal pacchetto. json che sono anche nello optionalDependencies e per ognuno di essi controlla se c'è una cartella con quel nome nella cartella node_modules. Se non ci sono cartelle, esegui npm install <json.dependencies[x]>.

Questa è l'unica soluzione temporanea a cui potrei pensare.

Se qualcuno ha un approccio migliore a questo, non esitate a rispondere.

Problemi correlati