2012-07-02 144 views
22

我需要在離線服務器上安裝「全局」npm應用程序。如何在離線服務器上安裝npm -g

這是很容易安裝一個普通的應用程序:

npm install 

,然後收拾生成的文件。手動或使用npm包裝

但是,如何在沒有Internet的情況下安裝全局應用程序(具有某種安裝腳本),如永遠

npm install -g forever 

回答

18

嘗試npmbox,它是npmzip的新名稱這將允許您通過一個文件安裝離線npm包

+0

我安裝了npmbox pn服務器,但是如何安裝pm2使用? –

+0

對不起,但沒有爲我工作。花了相當多的時間嘗試,直到被終止。沒有找到如何和張貼在下面。 –

17

你可以從tarball文件安裝東西,檢查出npm documentation。你可以在npm view forever dist.tarball找到永久tarball的URL並下載它。嘗試這樣的:

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

但是,你可能必須這樣做的所有依賴關係以及。可能有更好的方法,但這是我在搜索中找到的。

+1

感謝您的回答。然而,它立即試圖從互聯網拉入依賴關係。 * npm http GET https://registry.npmjs.org/broadway* –

+0

當然,您需要首先安裝任何依賴項。 – Kato

+0

你是對的加藤。但是如何? **有很多**永遠**的依賴關係。 –

3

嘗試npmzip

npm install -g npmzip 
npmzip <package> 

你會得到壓縮包在當前目錄 這可以被移動到目標機:

npmunzip <tarball> 
+1

npm can handel tar.gz zip git svn默認 [手冊](https://www.npmjs.org/doc/files/package.json.html#dependencies) – yellowsir

4

我創建offline-npm f或者以乾淨的方式安裝所有的依賴項。對於沒有使用node-gyp的模塊,所有內容都應該按照描述工作。

如果您需要node-gyp(通常在線安裝),請考慮將〜/ .node-gyp複製到該脫機機器。

1

在package.json中列出bundledDependencies中的依賴關係,然後運行npm pack來創建tarball。把它交給另一臺機器,或者npm install <tarball>,或者只是手動打開它。

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

1

嘛....一天後,試圖使其與上述文獻工作(npmbox或離線NPM)想出了辦法要簡單得多。感謝npmbox,我不得不說。 這個想法是保持在線訪問的實例的緩存,然後在離線的實例中使用它。

在機器與互聯網:

1 - 明確NPM緩存:npm cache clear

2 - 安裝包,可以說,它的xyz:npm install -g **package.x.y.z**

3 - 到一個文件夾中複製緩存。 ..讓我們把它叫做什麼(我假設NPM緩存是在根文件夾,不是說絕對的把握): cp -R /.npm/* **/cache-whatever-folder**

在機器沒有互聯網:

4 - 利用這個緩存的任何文件夾到例如,沒有互聯網和,乾淨的高速緩存後,用它安裝(我不會指明如何將文件夾:)

npm cache clear

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

複製

完成

2

INSTALL PM2 OFFLINE: -

測試在節點v6.10.3和NPM-3.10.10在RHEL-7

轉到機互聯網連接: -

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

轉到機器沒有互聯網連接: -

#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 

轉到機的網絡連接: -

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

轉到機器沒有互聯網連接: -

#npmunbox pm2.npmbox --global 
#pm2 ls