Sonatype Nexus3 Repository Manager 搭建 npm 私服

下載安裝

  1. Nexus官網(wǎng)下載:Nexus Repository Manager OSS 3.x,國內(nèi)網(wǎng)絡無法下載,附上網(wǎng)盤鏈接。
    網(wǎng)盤: https://pan.baidu.com/s/1CnGtu0GUxMbdYrXaNSHEkQ
    提取碼:uqmp
  2. 管理員運行cmd, 切換到 nexus-3.15.2-01/bin 目錄
    a.搜索命令提示符,用管理員身份運行


    image.png

    b.輸入程序所在文件夾下的磁盤名,加冒號,如“F:”


    image.png

    c.輸入“cd”+空格+“文件位置”
    image.png

    d.輸入要運行的文件名(和需要的參數(shù))
    image.png
nexus.exe /install 進行安裝, 成功后會提示 Installed service 'nexus'
nexus.exe /run 運行服務, 第一次要耐心等待很久
  1. 等待啟動完畢后, 進入 http://127.0.0.1:8081, 點擊右上角 Sign In 登陸, 默認賬號: admin 密碼: 密碼會在 D:\Nexus\sonatype-work\nexus3 中的password文件中保存,復制進去登錄。登錄后會提示你修改密碼,默認為 admin123
  2. 如果提示 could not open SCManager 是因為沒有使用管理員身份啟動cmd

添加npm倉庫

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


image.png
重要關系含義

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

點擊Create repository創(chuàng)建倉庫

選擇 npm(proxy), 輸入 Name: npm-proxy(代理服務的名稱,自己給自己標識使用不固定);remote storage 填寫 https://registry.npm.taobao.orghttps://registry.npmjs.org. 用于將包情求代理到地址地址

image.png

再次點擊Create repository

增加npm(hosted) 輸入 Name: npm-hosted 用于存放自己的私有包


image.png

image.png
第三次點擊Create repository

增加npm(group) 輸入 Name: npm-group, 下面Member repositories里選擇之前添加的2個移動右邊


image.png

配置與驗證npm倉庫

設置nodejs的默認倉庫地址
npm config set registry http://域名:端口/repository/npm-group/

設置完成后,可以找到當前用戶目錄下的.npmrc文件進行查看,內(nèi)容如下:


image.png
代理

如果公司內(nèi)網(wǎng)需要代理的話需要再http里設置http或者https的代理方可正常上傳下載


image.png
驗證

隨便進入一個目錄, 初始化package, npm init -y, npm --loglevel info install jquery 查看是否從自己的倉庫地址拉取包

npm init -y
npm --loglevel info install jquery
image.png

從上圖中可以看到,fetch地址即為私服地址。查看私服內(nèi)容npm下面,就會出現(xiàn)jquery
在安裝了依賴包后,就會有一些被緩存了,下次請求就不會走外網(wǎng)了。


image.png

發(fā)布包到私服

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

添加權限認證

設置權限, Realms 菜單, 將 npm Bearer Token Realm 添加到右邊


image.png
創(chuàng)建nx-deploy角色

給角色賦于一個nx-all權限


image.png
創(chuàng)建deployer 用戶

密碼也為 deployer,同時設定角色為nx-deploy


image.png
客戶端的.npmrc配置
registry=http://域名:端口號/repository/npm-group/
email=deployer@skytech.com
always-auth=true
_auth="ZGVwbG95ZXI6ZGVwbG95ZXI="

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

package.json 配置
"publishConfig" : {
    "registry" : "http://域名:端口號/repository/npm-hosted/"
  }

在包根目錄執(zhí)行npm build 后 npm publish即可。
注意:發(fā)布是npm-hosted,不是npm-group.
若不想在package.json配置,也可以在命令行指定,如下:

$ npm publish --registry=http://域名:端口號/repository/npm-hosted/

參考鏈接

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容