簡體   English   中英

如何創建 verdaccio 的離線私有注冊表

[英]How to create offline private registry of verdaccio

我使用verdaccio創建了私有npm registry

我希望能夠運行npm install --registry="http://localhost:4873"並從 private registry獲取所有依賴registry

我需要從我的項目node_modules目錄中發布所有包。

我不得不在node_module目錄中的每個包中運行npm publish 。(我找不到更好的方法。)

更多的成功發布但在某些情況下,我遇到了錯誤。 例如在zone.js包中:

npm ERR! code ELIFECYCLE npm ERR! errno 2 npm ERR! zone.js@0.8.29

prepublish: `tsc && gulp build` npm ERR! Exit status 2 npm ERR! npm

ERR! Failed at the zone.js@0.8.29 prepublish script. npm ERR! This is

probably not a problem with npm. There is likely additional logging

output above. npm WARN Local package.json exists, but node_modules

missing, did you mean to install?

acorn包裝:

acorn@5.7.3 build:main C:\Users\Admin\Desktop\test ng\ng-prj\node_modules\acorn

rollup -c rollup/config.main.js

'rollup' is not recognized as an internal or external command,

operable program or batch file.

npm ERR! code ELIFECYCLE

npm ERR! errno 1

npm ERR! acorn@5.7.3 build:main: `rollup -c rollup/config.main.js`

npm ERR! Exit status 1

npm ERR!

npm ERR! Failed at the acorn@5.7.3 build:main script.

npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm WARN Local package.json exists, but node_modules missing, did you mean to install?

有沒有一種簡單的方法可以做到這一點?

這里 Verdaccio 維護者。

我希望能夠運行 npm install --registry="http://localhost:4873" 並從私有注冊表中獲取所有依賴項。

您想要的是擁有一個包含所有依賴項的離線注冊表。 發布所有node_modules是不切實際的,幾乎是不可能的。

更多的成功發布但在某些情況下,我遇到了錯誤。 例如在 zone.js

這就是重點,您需要構建每個依賴項,這沒有意義。 一個普通的項目很容易有成千上萬的依賴和子依賴。 更不用說你會失去未來依賴更新的優勢。

因此,您需要的是正確緩存存儲文件夾中的所有依賴項。

  1. 運行 verdaccio $> verdaccio
  2. 確保您在線
  3. 運行npm install --registry="http://localhost:4873
  4. 安裝完成后,檢查您的本地緩存,請參閱此處如何找到它 您應該能夠在緩存中看到所有已解析的依賴項。
  5. 如果你想要真正的離線體驗,請在配置文件中注釋proxy如下
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    # proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    # proxy: npmjs

如果您注釋掉proxy Verdaccio 不會要求對遙控器進行任何更新,默認情況下是npmjs ,因此不會執行與外部網絡的連接。

  1. 重啟 Verdaccio
  2. 根據需要重復該過程。

所以,在這里,這種方法的優點。

  1. 當您離線時(您必須再次注釋掉代理部分),您將允許 Verdaccio 解決您是否有要緩存的新依賴項(如果您正在使用 semver 例如: lodash: ^1.5.6
  2. 您將擁有真正的安裝體驗,無需擔心刪除node_modules並清理npm cache
  3. 存儲只是一個文件夾,因此您可以將其移植到另一個地方(通過 USB 或 LAN)
  4. 與多個項目和節點包管理器工具(yarn、npm 或 pnpn)共享緩存
  5. 您不必在node_modules發布每個包,因此請參見第 2 點)。

我希望這可以幫助你。 此外,還有其他與離線模式相關的實踐,但僅限於yarn

我們使用了上面胡安皮卡多的建議。 這是我們所做的:

  1. 在 /home/verdaccio/config.yaml 編輯 verdaccio 的配置文件
  2. 確保允許代理
  3. 將 npm 注冊表設置為指向您的 verdaccio 實例
  4. 在系統上創建一個文件夾(任何文件夾)並運行 npm install 命令來下載包
  5. 檢查 /home/verdaccio/storage/ 目錄。 下載的軟件包及其依賴項現在應該在該目錄中。
  6. 編輯 verdaccio 的配置文件,注釋掉兩個“代理”行,以便關閉代理
  7. 重新啟動verdaccio

此時,運行 npm install 命令只會指向您的 verdaccio 實例,而不會轉到 registry.npmjs.com 並且 /home/verdaccio/storage 中的包將是您的離線可用包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM