2012-07-02 22 views
22

Ho bisogno di installare un'applicazione "globale" npm su un server offline.Come installare npm -g sul server offline

E 'facile da installare una normale applicazione:

npm install 

e poi impacchettare i file risultanti. O manualmente o utilizzando il pacchetto npm.

Tuttavia, come posso installare l'applicazione globale (che ha uno script di installazione di qualche tipo) come per sempre senza Internet?

npm install -g forever 

risposta

18

provare npmbox, è il nuovo nome della npmzip che ti consentirà di installare i pacchetti npm offline con un file

+0

Ho installato npmbox pn sul server ma come installare pm2 usando quello? –

+0

Scusate ma non ha funzionato per me. Ho passato un bel po 'di tempo a provare fino a quando non ho desistito. Ho trovato come e pubblicato di seguito. –

17

È possibile installare roba da un file tarball, controlla la npm documentation. Puoi trovare l'URL del tarball per sempre con npm view forever dist.tarball e scaricarlo. Provare qualcosa di simile:

curl -so forever.tar.gz `npm view forever dist.tarball 2> /dev/null` 
npm install ./forever.tar.gz -g 

Ma potrebbe essere necessario fare questo per tutte le dipendenze pure. Potrebbe esserci un modo migliore ma questo è quello che ho trovato nella mia ricerca.

+1

Grazie per la tua risposta. Tuttavia, tenta immediatamente di inserire le dipendenze da Internet. * npm http GET https://registry.npmjs.org/broadway* –

+0

Naturalmente, è necessario prima installare qualsiasi dipendenza. – Kato

+0

Hai ragione Kato. Ma come? Ci sono molte dipendenze per ** per sempre **. –

3

Prova npmzip

npm install -g npmzip 
npmzip <package> 

Si otterrà il tarball nella directory corrente Questo può essere spostato nella macchina di destinazione e:

npmunzip <tarball> 
+1

npm può gestire tar.gz zip git svn di default [manuale] (https://www.npmjs.org/doc/files/package.json.html#dependencies) – yellowsir

4

Ho creato offline-npm f o ottenere tutte le dipendenze installate in modo pulito. Per i moduli senza l'uso di node-gyp, tutto dovrebbe funzionare come descritto.

Se si richiede node-gyp (che di solito è installato in linea), è consigliabile copiare ~/.node-gyp su quella macchina offline.

1

Elencare le dipendenze in bundledDependencies nel pacchetto package.json, quindi eseguire npm pack per creare un archivio. Passa all'altra macchina e allo npm install <tarball> oppure aprila manualmente.

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

1

Bene .... dopo una giornata cercando di farlo funzionare con i riferimenti di cui sopra (npmbox o offline-NPM) si avvicinò con qualcosa modo molto più semplice. Grazie a npmbox, devo dire. L'idea è di mantenere la cache dall'istanza che ha accesso online e quindi usarla in quella offline.

In macchina con internet:

1 - chiara la cache NPM: npm cache clear

2 - pacchetto di installazione, consente di dire la sua xyz: npm install -g **package.x.y.z**

3 - cache di copia in una cartella. ..chiamiamolo qualunque (suppongo di cache NPM è nella cartella principale, non è assolutamente sicuro di questo): cp -R /.npm/* **/cache-whatever-folder**

In macchina senza internet:

4 - prendere questa cache-qualunque-cartella alla esempio senza internet e dopo che, la cache pulita e installare con esso (non voglio indicare come copiare la cartella :)

npm cache clear

npm install --global --cache **/cache-whatever-folder** --optional --cache-min 99999999999 --shrinkwrap false **package.x.y.z**

Fatto

2

INSTALLAZIONE PM2 ASSENTE: -

provata su Node-v6.10.3 e NPM-3.10.10 su RHEL-7

Vai macchina con internet connessione: -

#npm install -g npmbox 
#npmbox npmbox 
#scp npmbox.npmbox [email protected]:. 

Vai a macchina senza connessione a Internet: -

#ssh [email protected] 
#tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox 
#npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox 

Vai alla macchina con connessione a Internet: -

#npm install pm2 -g 
#npmbox pm2 
#scp pm2.npmbox [email protected]:. 

Vai alla macchina senza connessione a Internet: -

#npmunbox pm2.npmbox --global 
#pm2 ls 
Problemi correlati