2013-12-12 38 views
6

在並非每個用戶都有權訪問的受限制環境中,我希望能夠在任何可能的情況下脫機使用npm。如何在受限制的互聯網訪問環境中使用npm

我的想法是將全局配置指向共享緩存目錄,以便高級用戶可以進行安裝,並且依賴關係將最終存儲在緩存目錄中。然後,其他用戶可以對以前在緩存中的任何內容執行npm脫機安裝。

所以2問題:

這項工作? 缺少建立我自己的本地npm存儲庫有沒有更簡單的方法?

回答

7

每文檔:

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) 

因此,NPM允許你做:

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

例如:npm install ~/Downloads/http-proxy,前提是node_modules文件夾所在內http-proxy

您可以在內部(可訪問的)服務器上設置您的存儲庫,並指示用戶從那裏下載相同的名稱。

1

r3mus是對的。但是,對於每個用戶來說,這會導致一些認知開銷和可能的管理問題。

什麼可能更好地工作,是有一個企業託管NPM庫(如下所述:http://clock.co.uk/tech-blogs/how-to-create-a-private-npmjs-repository),然後只是有用戶通過npm set registry http://yourregistry.com

+0

這絕對作品更完美,雖然OP表示,一個更簡單的方法將是首選;) – brandonscript

+0

是啊,我想我們的答案,每個取決於誰他試圖使它容易對。 :) – Paul

+1

*確切*:D然後,對於長期來說誰更容易... – brandonscript

2

感謝您的答案改變(一次)的註冊表設置。我最終做的是使用https://github.com/rlidwka/sinopia

這充當鏡像存儲庫。我可以給這個過程互聯網訪問,而不是其他用戶。然後,我爲所有用戶設置一個環境變量,將它們的npm存儲庫指向sinopia實例。

早期,但這似乎運作良好。

0

對於構建服務器,合理的策略是將node_modules目錄與已安裝模塊的現有目錄進行符號鏈接。

例如我的PowerShell腳本可能會讀這樣的事情

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