2013-12-12 10 views
6

In un ambiente limitato in cui non tutti gli utenti hanno accesso mi piacerebbe poter utilizzare npm offline dove mai possibile.Come utilizzare npm in un ambiente con accesso a Internet limitato

La mia idea è di puntare la configurazione globale in una directory di cache condivisa in modo che gli utenti esperti possano eseguire installazioni e le dipendenze finiscano nella directory della cache. Gli altri utenti possono quindi eseguire installazioni offline di npm per qualsiasi cosa precedentemente nella cache.

SO 2 Domande:

Sarà questo lavoro? Non riesci a configurare il mio repository npm locale?

risposta

7

Per la documentazione:

npm install (with no args in a package dir) 
npm install <tarball file> 
npm install <tarball url> 
npm install <folder> 
npm install <name> [--save|--save-dev|--save-optional] 
npm install <name>@<tag> 
npm install <name>@<version> 
npm install <name>@<version range> 
npm i (with any of the previous argument usage) 

Come tale, NPM permette di fare:

npm install /path/to/folder/containing/ node_modules

Ad esempio: npm install ~/Downloads/http-proxy, a condizione che la cartella node_modules risiede all'interno http-proxy.

È possibile impostare il repository su un server interno (accessibile) e indirizzare le persone a scaricare con lo stesso nome da lì.

1

r3mus ha ragione. Tuttavia, per ciascun utente ciò comporterebbe un sovraccarico cognitivo e probabilmente problemi di gestione.

Che cosa potrebbe funzionare meglio è quello di avere un repository NPM ospitato aziendale (come descritto qui: http://clock.co.uk/tech-blogs/how-to-create-a-private-npmjs-repository) e poi basta avere gli utenti cambiano (una volta) le impostazioni del Registro di via npm set registry http://yourregistry.com

+0

Questo funziona decisamente più senza soluzione di continuità, anche se OP ha indicato che un modo più semplice sarebbe preferito;) – brandonscript

+0

Sì, credo nostre risposte ciascuno dipende da chi sta cercando di rendere più facile su . :) – Paul

+1

* esattamente *: D E poi c'è più facile per chi a lungo termine ... – brandonscript

2

Grazie per le risposte. Quello che ho finito di fare è usare https://github.com/rlidwka/sinopia

Questo funge da repository mirror. Posso dare a questo processo l'accesso a internet e non altri utenti. Quindi ho impostato una variabile di ambiente per tutti gli utenti per puntare il loro repository npm nell'istanza sinopia.

Primi giorni, ma sembra funzionare bene.

0

Per i server di compilazione, una strategia ragionevole consiste nel collegare simbolicamente la directory node_modules a una directory esistente in cui i moduli sono già stati installati.

ad es. il mio script PowerShell potrebbe leggere qualcosa di simile

If (-Not (Test-Path node_modules)) 
{ 
    & cmd /c mklink /d /j node_modules D:\npm-cache\node_modules 
    Write-Verbose "Symlinked node_modules" 
} 
Problemi correlati