使用 Nexus3 Repository Manager 搭建 npm 私服


公司里一般都有自己的私服,用於管理封裝的工具插件等,Nexus2主要是用於maven/gralde倉庫的統一管理,Nexus3則添加了npm插件,可以對npm提供支持,其實用於npm倉庫管理的還有一個工具sinopia,可惜的是早已停止更新。

下載安裝

  1. 在官網下載Nexus Repository Manager OSS 3.x, 解壓至任意位置.

  2. 管理員運行cmd, 切換到 nexus-3.15.2-01/bin 目錄

    nexus.exe /install 進行安裝, 成功后會提示 Installed service 'nexus

    nexus.exe /run 運行服務, 第一次要耐心等待很久

  3. 等待啟動完畢后, 進入 http://127.0.0.1:8081, 點擊右上角 Sign In 登陸, 默認賬號: admin 密碼: admin123

  4. 如果提示 could not open SCManager 是因為沒有使用管理員身份啟動cmd

添加npm倉庫

  • 點擊在左側菜單Repositories,可以看到倉庫類型列表,如下:

     

     


    npm(group)表示分組,npm(hosted)表示本機私有,npm(proxy)表示遠程代理。
    若registry配置為group(包括hosted和proxy),首先會從hosted取,若無則從proxy取並緩存,下次則會從緩存取。

     

  • 點擊Create repository按鈕創建倉庫

  • 選擇 npm(proxy), 輸入 Name: npm-proxy, remote storage 填寫 https://registry.npm.taobao.orghttps://registry.npmjs.org. 用於將包情求代理到地址地址

     

     

  • 再次點擊Create repository按鈕., 增加 npm(hosted) 輸入 Name: npm-hosted 用於存放自己的私有包


     

     

  • 再次點擊Create repository按鈕.,增加npm(group) 輸入 Name: npm-all, 下面Member repositories里選擇之前添加的2個移動右邊


     

     

配置與驗證npm倉庫

  • 查看並設置nodejs的默認倉庫地址
npm config get registry  #http://registry.cnpmjs.org/ npm config set registry http://localhost:8081/repository/npm-group/ 
  • 設置完成后,可以找到當前用戶目錄下的.npmrc文件,內容如下:


     

     

  • 隨便進入一個目錄, 初始化package, npm init -y, npm --loglevel info install jquery 查看是否從自己的倉庫地址拉取包
npm init -y
npm --loglevel info install jquery
#查看本地包的緩存地址(和私服無關)命令 npm config get cache 
 

 


從上圖中可以看到,fetch地址即為私服地址。
查看剛搭建的私服里的內容為空, 在安裝了依賴包后,就會有一些被緩存了,下次請求就不會走外網了。


 

 

發布包到私服

npm發布包是需要先登錄的,默認是登錄到npm官方服務器,若registry已更改為其它地址則可能登錄失敗,而這里我們只是想把包發布到自己私有的服務器上。

  1. 添加權限認證
    設置權限, Realms 菜單, 將 npm Bearer Token Realm 添加到右邊
  2. 創建nx-deploy角色
    給角色賦於一個nx-repository-view-*-*-*權限
     

     

  3. 創建deployer 用戶,密碼也為 deployer,同時設定角色為nx-deploy


     

     

  4. 客戶端的.npmrc配置
registry=http://127.0.0.1:8081/repository/npm-group/ email=deployer@skytech.com always-auth=true _auth="ZGVwbG95ZXI6ZGVwbG95ZXI=" 

_auth是 username:password 的base64值,這樣設置的好處是publish時就不用login了。

  1. 發布控件到npm私服中
    在package.json 配置
"publishConfig" : { "registry" : "http://localhost:8081/repository/npm-hosted/" } 

在包根目錄執行npm publish即可。
如下:

 

 


注意:發布是npm-hosted,不是npm-group.
若不想在package.json配置,也可以在命令行指定,如下:

 

$ npm publish --registry=http://localhost:8081/repository/npm-hosted/ + vue-hslider@1.0.0 

Nexus3數據備份遷移

內網環境下,很多包需要從外網移入,可以把相關包在外網安裝測試成功后,然后將緩存的包直接復制到內網即可。

Linux

  • 倉庫遷移
    Nexus的構件倉庫都保存在sonatype-work目錄中,該目錄的位置由nexus/conf/nexus.properties配置文件指定。
    倉庫遷移需要兩個過程:備份和還原

  • 備份倉庫
    將sonatype-work文件夾整體備份即可,也可以選擇只備份最重要的兩個文件夾索引(indexer)和倉庫(storage)

  • 還原倉庫
    將備份好的sonatype-work文件拷貝到新的服務器中。然后修改nexus/conf/nexus.properties配置文件,重新指定倉庫的目錄。

Windows

  • 倉庫遷移
    Nexus的構件倉庫都保存在sonatype-work目錄中,該目錄的位置由bin/nexus.vmoptions配置文件指定(Dkaraf.data)。
    倉庫遷移需要兩個過程:備份和還原

  • 備份倉庫
    將sonatype-work文件夾整體備份即可,也可以選擇只備份最重要的兩個文件夾索引(indexer)和倉庫(storage)

  • 還原倉庫
    將備份好的sonatype-work文件拷貝到新的服務器中。然后修改bin/nexus.vmoptions配置文件,重新指定倉庫的目錄。




原文:https://www.jianshu.com/p/1674a6bc1c12


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM