2012-07-02 12 views
22

Ich muss eine "globale" npm-Anwendungen auf einem Offline-Server installieren.Wie installiere npm -g auf Offline-Server

Es ist einfach eine normale Anwendung zu installieren:

npm install 

und dann die resultierenden Dateien packen. Entweder manuell oder mit npm pack.

Wie kann ich jedoch globale Anwendung installieren (die ein Installationsskript von irgendeiner Art hat) wie für immer ohne Internet?

npm install -g forever 

Antwort

18

versuchen npmbox, ist es der neue Name von npmzip das erlaubt Ihnen, offline npm Pakete durch eine Akte zu installieren

+0

Ich installierte npmbox pn den Server aber wie installiert pm2 das verwenden? –

+0

Sorry, aber hat nicht für mich gearbeitet. Habe ziemlich viel Zeit damit verbracht, zu versuchen, bis ich aufhörte. Fand wie und veröffentlichte unten. –

17

Sie können Material aus einer Tarball-Datei installieren, die npm documentation überprüfen. Sie können die URL des Tarball für immer mit npm view forever dist.tarball finden und herunterladen. Versuchen Sie etwas wie folgt:

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

Aber Sie müssen dies möglicherweise auch für alle Abhängigkeiten tun. Es könnte einen besseren Weg geben, aber das habe ich bei meiner Suche gefunden.

+1

Danke für deine Antwort. Es versucht jedoch sofort, die Abhängigkeiten aus dem Internet zu ziehen. * npm http GET https://registry.npmjs.org/broadway* –

+0

Natürlich müssten Sie zuerst alle Abhängigkeiten installieren. – Kato

+0

Sie sind richtig Kato. Aber wie? Es gibt viele Abhängigkeiten für ** für immer **. –

3

npmzip

npm install -g npmzip 
npmzip <package> 

Versuchen Sie das Tarball im aktuellen Verzeichnis bekommen Dies ist auf die Zielmaschine bewegt werden kann, und:

npmunzip <tarball> 
+1

npm kann handeln tar.gz zip git svn standardmäßig [manual] (https://www.npmjs.org/doc/files/package.json.html#dependencies) – yellowsir

4

ich schuf offline-npm f oder alle Abhängigkeiten sauber zu installieren. Bei Modulen ohne den Einsatz von Node-Gyp sollte alles wie beschrieben funktionieren.

Wenn Sie node-gyp benötigen (das normalerweise online installiert wird), sollten Sie das Kopieren von ~/.node-gyp auf diese Offline-Maschine in Betracht ziehen.

1

Listen Sie die Abhängigkeiten in bundledDependencies in Ihrer package.json auf, und führen Sie dann npm pack aus, um einen Tarball zu erstellen. Holen Sie das zu der anderen Maschine, und entweder npm install <tarball>, oder öffnen Sie es einfach manuell.

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

1

Well .... nach einem Tag funktioniert mit über Referenzen zu machen versucht (npmbox oder offline-NPM) kam mit etwas Art und Weise viel einfacher werden. Danke an npmbox muss ich sagen. Die Idee ist, den Cache von der Instanz, die Online-Zugriff hat, zu behalten und sie dann offline zu verwenden.

In Maschine mit internet:

1 - klar npm Cache: npm cache clear

2 - Installationspaket, läßt seinen xyz sagen: npm install -g **package.x.y.z**

3 - Kopie-Cache in einen Ordner. ..nennen wir es was auch immer (ich nehme an npm Cache in Stammordner ist, nicht absolut sicher, dass): cp -R /.npm/* **/cache-whatever-folder**

In Maschine ohne Internet:

4 - nehmen Sie diesen Cache-was-Ordner der Beispiel ohne Internet und danach, sauber Cache und installieren sie mit ihm (ich will nicht angeben, wie sie den Ordner kopieren :)

npm cache clear

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

Geschehen

2

PM2 Offline-Installation: -

Getestet auf Node-v6.10.3 und Npm-3.10.10 auf RHEL-7

mit Internet-Maschine gehen Verbindung: -

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

Zum Maschine ohne Internet-Verbindung: -

#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 

Zum Maschine mit Internetverbindung: -

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

Zum Maschine ohne Internet-Verbindung: -

#npmunbox pm2.npmbox --global 
#pm2 ls 
Verwandte Themen