cambiare il registro di NPM in base alla directory

Recentemente ho iniziato a sviluppare per il nodo. La società per cui lavoro ha un registro interno di npm. Voglio sapere come utilizzare impostazioni di registro diverse a seconda di dove mi sto sviluppando. Per illustrare, ho una struttura di directory come mostrato di seguito:

~/Code | | -- My Projects | | | | -- Proj 1 | | -- Proj 2 | |-- My Company | |--Proj 1 |--Proj 2 

Quando mi sto sviluppando in uno dei progetti in “My Project”, vorrei che il registro di npm indicasse https://registry.npmjs.org (il registro predefinito). Ma quando mi sto sviluppando in uno dei progetti in “My Company”, voglio che il registro di NPM indichi il registro specifico dell’azienda. In questo momento, il mio metodo ingenuo è di usare il npm config set registry per aggiornare il registro.

Esistono due casi d’uso distinti per l’utilizzo del registro privato di npm:

  1. Installazione: usa il --reg o --registry :

     npm install mypackage --reg http://myreg.npmjitsu.com 
  2. Pubblicazione: puoi anche usare --reg o --registry , ma ti consiglio vivamente di usare l’impostazione publishConfig nel tuo file package.json (Vedi: la documentazione di npm )

     { "publishConfig": { "registry": "http://myreg.npmjitsu.com" } } 

    Ciò impedisce agli sviluppatori di pubblicare accidentalmente moduli privati ​​nel registro pubblico dimenticando il flag --registry

Quindi aggiungi publishConfig a tutti i package.json per la tua azienda --registry durante l’installazione dal loro npm privato.

Il registro dovrebbe essere necessario solo quando si installano i pacchetti. È ansible utilizzare questo quando si desidera installare dal registro privato.

 npm install packagename --registry https://myregistryurl 

Anche questo potrebbe funzionare ..

 npm install https://myregistryurl/packagename 

e basta installare il modo normale quando si utilizza il registro pubblico.

https://github.com/npm/npm/issues/4751

npm ha recentemente aggiunto il supporto per i file .npmrc per pacchetto, dovrebbe fare quello che vuoi.