在並非每個用戶都有權訪問的受限制環境中,我希望能夠在任何可能的情況下脫機使用npm。如何在受限制的互聯網訪問環境中使用npm
我的想法是將全局配置指向共享緩存目錄,以便高級用戶可以進行安裝,並且依賴關係將最終存儲在緩存目錄中。然後,其他用戶可以對以前在緩存中的任何內容執行npm脫機安裝。
所以2問題:
這項工作? 缺少建立我自己的本地npm存儲庫有沒有更簡單的方法?
在並非每個用戶都有權訪問的受限制環境中,我希望能夠在任何可能的情況下脫機使用npm。如何在受限制的互聯網訪問環境中使用npm
我的想法是將全局配置指向共享緩存目錄,以便高級用戶可以進行安裝,並且依賴關係將最終存儲在緩存目錄中。然後,其他用戶可以對以前在緩存中的任何內容執行npm脫機安裝。
所以2問題:
這項工作? 缺少建立我自己的本地npm存儲庫有沒有更簡單的方法?
每文檔:
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
。
您可以在內部(可訪問的)服務器上設置您的存儲庫,並指示用戶從那裏下載相同的名稱。
r3mus是對的。但是,對於每個用戶來說,這會導致一些認知開銷和可能的管理問題。
什麼可能更好地工作,是有一個企業託管NPM庫(如下所述:http://clock.co.uk/tech-blogs/how-to-create-a-private-npmjs-repository),然後只是有用戶通過npm set registry http://yourregistry.com
感謝您的答案改變(一次)的註冊表設置。我最終做的是使用https://github.com/rlidwka/sinopia
這充當鏡像存儲庫。我可以給這個過程互聯網訪問,而不是其他用戶。然後,我爲所有用戶設置一個環境變量,將它們的npm存儲庫指向sinopia實例。
早期,但這似乎運作良好。
對於構建服務器,合理的策略是將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"
}
這絕對作品更完美,雖然OP表示,一個更簡單的方法將是首選;) – brandonscript
是啊,我想我們的答案,每個取決於誰他試圖使它容易對。 :) – Paul
*確切*:D然後,對於長期來說誰更容易... – brandonscript