NPM配置私服構建內網中央倉庫過程詳解

寫在前面

目前大部分的項目,基本上都采用瞭前後端分離的框架。隨著項目的不斷做大做強,框架就會變得很龐大。

那麼前端的框架,也是會變得不斷的臃腫。不同的模塊項目前端,可能有些公共的方法,都是共用一套的,那一般的做法就是每個模塊都拷貝一份一樣的代碼。

那這樣就會存在問題,如果有公共的方法需要修改,那所有的模塊前端框架都得改,這是一個比較大的問題。

我們的java項目,就可以抽取公共的模塊,使用maven進行管理;其實前端的框架,也是可以抽取公共的模塊,使用npm進行管理。

那這裡就涉及到公共模塊包,要如何存放的問題瞭,這裡就得有個npm模塊倉庫才行。

那這裡就有個問題,我們自己公司開發得公共模塊,不能夠發佈到外網得中央倉庫吧?這個是會存在安全問題的,所以我們得有自己得一個倉庫。

那這裡就我們今天要講得主要內容,使用nexus配置出npm私服。

好嘍,廢話不多說瞭,我們上正菜嘍!!!

1. 概述

在目前的前端都分離開發時,我們也會將前端編譯成組件的方式,實現在項目之間的重用。在很多情況下 我們可以將 組件發佈到 npmjs.org網站,不過這個問題是網速慢是網速慢,同時發佈到外網,總會存在一定的安全問題。

有時我們隻是在團隊內部使用,這樣我們可以部署自己的私服。

nexus 就是一個私服管理的軟件,他支持jar,也支持 npm的私服。

2. 部署nexus

nexus 這個軟件之前是免費下載的,現在有商業版本和免費版本。我們可以網絡上找到這些軟件,建議使用3.22以上的版本。

將tar –xzf *.gz 軟件解壓,然後執行命令進行啟動。

解壓後我們可以看到:

解壓出瞭兩個目錄

註意不要使用root 用戶啟動服務,我們可以創建一個用戶

  • 添加用戶
  • useradd nexus
  • 對目錄進行授權
 chown -R nexus:nexus nexus-3.31.1-01
 chown -R nexus:nexus sonatype-work
 chmod -R 744 nexus-3.31.1-01
 chmod -R 744 sonatype-work
  • 使用nexus 用戶啟動
 su nexus
 cd nexus-3.31.1-01/bin
 //可以嘗試以下命令啟動
 ./nexus run //這個可以看到啟動日志
 ./nexus start & //後端啟動
  • 開放端口
/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT

3. 幾個概念

我們可以在私服上創建自己的庫。

庫分為三種類型:

3.1 代理

這種可以代理比如淘寶的鏡像,這個數據塊,而且通常能找到我們需要的包。

3.2 本地包

這個意思是,我們可以將私有的包發送到本地包。這個用於發佈包。

3.3 包分組

這個是將本地包和代理進行組合,這個通常用來現在相關的包,這個用來下載包。

4. 配置NPM包

4.1 配置本地包

創建倉庫

選擇倉庫類型

4.2 配置代理

這裡我們配置的是代理淘寶。

4.3 配置包分組

4.4 配置好後我們就可以進行發佈和下載

  • 配置使用私服

執行下面的命令,指定本地倉庫。

npm config set registry http://***:8081/repository/npm_llsydn_hosted/
  • 登錄私服

npm login

輸入 nexus 的用戶密碼和有效登錄。

使用私服進行安裝

npm install --registry=http://***:8081/repository/npm_llsydn_group/

註意這裡使用的是包分組,這個分包組包括瞭本地和代理的鏡像。

發佈組件包

直接使用 npm publish 進行發佈。

4.5 遇到的問題

4.5.1 在登錄的時候遇到的問題

執行npm login,輸入正確的密碼後報錯如下:

Unable to authenticate, need: BASIC realm=”Sonatype Nexus Repository Manager”

解決辦法:

4.5.2 登錄報錯

Unable to authenticate, need: BASIC realm=”Sonatype Nexus Repository Manager”

這個錯誤和上面的錯誤看上去是一樣的。

這個錯誤,在其他人的機器登錄又是可以的,解決辦法 找到文件:.npmrc

可以清空到這個文件,然後再重試就可以瞭。

以上就是NPM配置私服構建內網中央倉庫過程詳解的詳細內容,更多關於NPM配置私服內網中央倉庫的資料請關註WalkonNet其它相關文章!

推薦閱讀: