npm私服搭建的必要性
1.如果公司處於隱私保護的需要,不想講自己封的包推到npm社區,但又急需要一套完整的包管理工具來管理越來越多的組件,模塊,項目。對於前端,最熟悉的莫過於npm,bower等,但是bower的市場明顯沒有npm強大的,npm是前端包管理的不二選擇 ~
2.我們公司項目里直接依賴或間接依賴的包可能會有上千個,下過node庫的人都懂,從npmjs上下載有多慢,所以大家會用cnpm從淘寶那下,但有比淘寶更快的方法是從局域網的私服下。
3.當我們搭好了這套私服管理工具之后有什么優勢呢?
私有包托管在我們的私服上,不對外。
項目中使用的所有包可以緩存在我們的私服上,然后大家下包的時候走私服,不用走npmjs了。速度快上七八倍不在話下。
對於下載和發布npm包都有了相應的權限管理。
搭建過程
叨叨了這么半天,終於開始進入正題,有木有很期待。
服務器搭建
1.安裝node環境
下載最新的node環境,下載地址:https://nodejs.org/en/download/current/
安裝命令:解壓安裝就好,版本號自己變一下,然后配置一下環境變量,比較簡單這里不多說了。
tar -xvf node-v8.9.1-linux-x64.tar.gz
2.安裝verdaccio
加上–unsafe-perm的原因是防止報grywarn權限的錯。
npm install -g verdaccio --unsafe-perm
3. 配置
3.1. 修改配置文件
verdaccio 的特點是,你在哪個目錄運行,它的就會在對應的目錄下創建自己的文件。目錄下默認有兩個文件:config.yaml和storage,htpasswd 是添加用戶之后自動創建的;
由於第一次啟動默認的config.xml文件是從原始文件default.yaml拷貝而來,可先修改verdaccio 原始的default.yaml。
地址:verdaccio 安裝目錄/conf/ default.yaml。
打開默認啟動的config.yaml文件。
vim /home/admin/.config/verdaccio/config.yaml
在配置文件最后添加監聽端口,配置文件詳解請見文末尾
listen: 0.0.0.0:4873 # listen on all addresses
3.2. 對外開放4873端口
verdaccio繼承了sinopia,端口號4873依然不變。
firewall-cmd --state # 先查看防火牆狀態,
service firewalld start # 開啟防火牆:
firewall-cmd --zone=public --add-port=4873/tcp –permanent #開放4873端口
firewall-cmd --reload #重新載入
firewall-cmd --zone=public --query-port=4873/tcp #查看是否添加成功
4.啟動verdaccio
4.1.verdaccio直接啟動
命令:
verdaccio
// 顯示信息,
第一句是配置文件的地址,
第二句,給了我們地址,訪問便可以看到我們的私服已經搭建成功了。
目前還沒有往上發布過包,所以沒有任何包的信息。當我們打開頁面還可以看到服務器這邊有訪問記錄,控制台的日志一直在打。
verdaccio doesn‘t need superuser privileges. Don‘t run it und
warn — config file - /home/admin/.config/verdaccio/config.yaml
warn — http address - http://localhost:4873/ - verdaccio/
4.2 pm2守護verdaccio進程
利用第一種方法雖然可以正常啟動和使用verdaccio,但不建議用這種方式啟動verdaccio,我們可以用pm2來使用pm2對verdaccio進程進行托管啟動。
安裝pm2並使用pm2啟動verdaccio,使用pm2托管的進程可以保證進程永遠是活着的,嘗試通過kill -9去殺verdaccio的進程發現殺了之后又自動啟起來。推薦使用此種方式啟動verdaccio.
4.2.1安裝pm2
npm install -g pm2 --unsafe-perm
4.2.2使用pm2啟動verdaccio
pm2 start verdaccio
4.2.3 查看pm2 守護下的進程verdaccio的實時日志
pm2 show verdaccio
通過這個命令我們可以從下圖中看到所有verdaccio的所有信息,打開 out log path查看進程輸出日志,出現錯誤時候也可以打開error log來查看錯誤日志。
實時查看該路徑下的日志命令:
tail -f /home/admin/.pm2/logs/verdaccio-out-0.log
添加用戶
npm adduser --registry http://192.168.XX.XX:4873 //后面是我們的私服地址
類似如下:
Username: lk
Password:
Email: (this IS public) lk@qq.com
Logged in as rong on http://192.168.XX.XX:4873/.
然后在verdaccion啟動頁面嘗試登錄即可,默認登錄后有發布包的權限。(這里可以通過修改config.yaml配置文件來對權限進行設置)、
到這里服務器端的搭建就完畢了,下篇我們來介紹客戶端如何使用。