nexus 上搭建npm私有伺服器

itKingOne發表於2018-08-06

nexus 純小白文,如有雷同,大概率我參考了你的文件。

1.在本地執行nexus

附上下載連結:Nexus Repository OSS 下載連結
附上文件連結:Nexus Repository OSS 文件連結

有幾個值得注意的是

  • 我的 系統為 64位 win 7,平時只配置了java的基本環境,沒有配置編譯環境。很尷尬,配置javac耽誤了我一點時間。需要的同學,在執行之前 需要配置一下jre環境。

  • 我下載的是 nexus-3.5.0-02 這個版本。事實證明在win下雖然看起來一副人畜無害的樣子,似乎可以直接點選安裝,但是事實上,嘖嘖嘖。

Paste_Image.png

這裡沒有好好閱讀文件,也消耗了我的一些時間,下面放出win 下正確啟動方法

// 在 \nexus-3.5.0-02\bin 目錄下執行
$ nexus.exe /run
  • 這裡經測試 用win自帶的cmd,和budun都可以比較好的啟動,用git bash則啟動不是很好

     

    Paste_Image.png

啟動之後預設地址為 localhost:8081, 預設賬號密碼 admin/ admin123

Nexus Repository Manager 中新增 npm

如果點選:

Paste_Image.png

這裡有三個型別的npm選項:

Paste_Image.png

文件中對這三個型別的倉庫有詳細的解釋:

Paste_Image.png


附上某歌翻譯:

Proxying npm Registries

為了減少開發人員和CI伺服器的重複下載量並提高下載速度,您應該對託管在https://registry.npmjs.org上的登錄檔進行代理。 預設情況下,npm直接訪問此登錄檔。 您還可以代理您需要的任何其他登錄檔。
要代理外部npm登錄檔,您只需建立一個新的npm(代理),如“儲存庫管理”中所述。
最小配置步驟是:

Private npm Registries

私人npm登錄檔可用於上傳您自己的軟體包以及第三方軟體包。 您可以通過在儲存庫管理器中設定npm格式的託管儲存庫來建立私有的npm登錄檔。 為了這些目的,建立兩個獨立的託管儲存庫是一個很好的做法。
要建立具有npm格式的託管儲存庫,只需建立一個新的npm(託管),如“儲存庫管理”中所述。
最小配置步驟是:

  • 定義名稱
  • 選擇儲存的Blob儲存

隨著軟體包從儲存庫部署或刪除,npm登錄檔資訊將立即更新。

Grouping npm Registries

儲存庫組是將所有npm登錄檔儲存庫從儲存庫管理器公開給您的使用者的推薦方式,而不需要任何其他客戶端配置。儲存庫組允許您將多個代理和託管儲存庫的聚合內容公開為一個URL到npm和其他工具。這可以通過建立一個新的npm(組),如“儲存庫管理”中所述,用於npm儲存庫。
最小配置步驟是:

  • 定義名稱
  • 選擇儲存的Blob儲存
  • 以所需的順序將npm儲存庫新增到成員列表中

典型的有用的示例是將代理儲存庫分組:代理npm登錄檔,npm託管儲存庫與內部軟體包和另一個npm託管儲存庫與第三方軟體包。
使用儲存庫組的URL作為客戶端工具中的npm儲存庫URL,您可以使用一個URL訪問所有三個儲存庫中的軟體包。新增的任何新軟體包以及新增到組中的任何新儲存庫將自動可用。


  1. 建立 Proxying npm Registries 代理倉庫

Paste_Image.png

  1. 建立 Hosted npm Registries 代理倉庫

Paste_Image.png

  1. 建立 Grouping npm Registries 倉庫
    需要注意的是組倉庫要把之前的 proxy 和 hosted 都新增上。

Paste_Image.png

我的目錄對應為 mytest/myhost/mygroup

在home目錄下, 的.npmrc檔案中新增 registry = http://localhost:8081/repository/npm-all/ 。這個路徑要和自己的路徑一致,並且最後的rep名要和group相同。

win下 home路徑:

 

Paste_Image.png

這時嘗試一下

// 檢視一下 是否從本地伺服器中下載
$ npm -loglevel info install grunt

圖片我抄的,我自己的沒截圖

此時可以驗證一下 是否依賴走了代理:

Paste_Image.png

設定許可權

把這個選項拖到右邊就可以了

Paste_Image.png

在admin之外可以重新設定一個賬號,以及許可權

Paste_Image.png

// 使用
$ npm login –registry=http://localhost:8081/repository/mygroup
// 進行登陸,需要填寫賬號、密碼以及郵箱。

Paste_Image.png

釋出到hosted

我和原教程不一樣的是:我釋出到本地hosted, 而不是直接到npm社群,這裡需要注意的是 通過proxy是可以直接釋出到npm社群的,使用的是社群的賬號密碼,這個需要提前申請

要釋出的模組,必須保證在根目錄下有package.json檔案,否則會報錯。

pachage.json檔案內容比較隨意,如果比較懶 可以用 npm init 直接自動生成。

  {
      "name": "myhost",
      "version": "1.0.0"
    }

然後執行釋出命令:

 $ npm publish –registry http://localhost:8081/repository/myhost

Paste_Image.png

然後我遇到了報錯,按照報錯執行

 $ npm adduser –registry http://localhost:8081/repository/myhost

這裡值得注意的是, adduser的時候要指明是哪個rep,要不就會add到預設的.npmrc 裡新增的 rep中

Paste_Image.png

新增完使用者之後,再執行釋出命令就ok了。

Paste_Image.png

package.json可以指定name 和version並且可以新增發布路徑的配置:

  {
     "name": "intro",
     "version": "1.0.0",
     "publishConfig" : {
         "registry" : "http://localhost:8081/repository/myhost/"
      }
  }

這樣的話釋出直接用 npm publish就可以了。

釋出之後可以在 系統中的 左側browse 中的assets中看到上傳的資源

Paste_Image.png

group 中可以同時看到 proxy 和 hosted 的資源, proxy會存下第一次下載過的目錄,之後再下載時走的是代理,hosted存的是本地上傳的包資源。

然後可以在本地下載一下剛才上傳到hosted的包:

Paste_Image.png

以上,為所有內容。

參考: npm 私服(上)npm 私服(下)nexus搭建npm私服
感謝以上朋友的文件, 內容侵刪。

相關文章