隨著時間的推移,前端的工程日益龐大,越來越複雜的依賴包需要包管理器來維護。相比搭建沒有優勢bower倉儲,更好的方式是在區域網搭建npm倉儲,維護專案中package.json中的各個外掛程式的版本即可維護專案依賴。
sinopia是乙個部署簡易的可以實現github倉儲私有化的npm元件。
注:本文sinopia的版本為1.4。
如上圖:
客戶端產生npm請求後,傳送到伺服器(外網需要通過閘道器)。
用pm2啟動sinopia集群,可以自動負載均衡。當請求到sinopia後,他會先進行許可權驗證(如果設定),通過驗證之後就在本地檔案系統中尋找對應的npm包,如果不存在則向上游鏈結(uplinks)配置的位址發請求。
安裝較為簡單,本文件所有的安裝都在root許可權下進行。
node版本:node-v6.2.0-linux-x64.tar.gz
安裝過程略。
請注意,離線安裝時,壓縮包要在linux下解壓,否則npm無法使用。
node安裝成功並設定軟連線後,因為伺服器在內網,所以先要設定npm**。
//設定npm**
npm config set proxy=""
//設定**國內映象
npm config set registry="" --可以預設npmjs
//安裝sionpia(不加後邊引數會在node-gyp編譯失敗)
npm install sinopia --no-optional --no-shrinkwrap
//將sionpia配置軟連線
ln -s /root/node_modules/sinopia/bin/sinopia /usr/local/bin/sinopia
//測試啟動
sinopia
如果安裝成功,會出現以下log,則證明安裝成功。
//安裝pm2
npm install pm2 -g
//配置軟連線 (安裝出現警告可能會需要)
ln -s /root/node/node-v6.2.0-linux-x64/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
//測試是否安裝成功
pm2
如果安裝成功,則會出現pm2圖示及命令。
可以程序啟動或pm2啟動。
程序啟動: sinopia -l
pm2啟動: pm2 startwhich sinopia
請注意,當用pm2啟動時,不要打錯單引號的全形半形。並且啟動的埠需要在配置檔案中配置:
vi /root/.config/sinopia/config.yaml
在最後一行中加入:
listen: 192.168.0.1:1234
配置檔案目錄:
config.yaml ------sinopia的配置檔案
htpasswd ------存放使用者賬戶資訊的檔案,密碼通過sha1、base64加密
storage ------存放npm包及快取包的資料夾
以上檔案的目錄為(root使用者下):/root/.config/sinopia/
storage: /root/.local/share/sinopia/storage
先在客戶端建立發布許可權的賬戶(假設為test,使用者名稱不能有大寫),然後為該賬戶設定發布許可權:
packages:
'*':
# allow all users (including non-authenticated users) to read and
# publish all packages
## you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish packages
# (anyone can register by default, remember?)
publish: test
# if package is not **ailable locally, proxy requests to 'npmjs' registry
proxy: npmjs
auth:
htpasswd:
file: ./htpasswd
# maximum amount of users allowed to register, defaults to "+inf".
# you can set this to -1 to disable registration.
max_users: -1
max_users為最大使用者數量,值為-1則無法通過adduser建立賬號。
日誌為檔案儲存。
"http://host:port"為sinopia服務位址。建議使用nrm(nrm 是乙個 npm 源管理器)切換倉儲位址。
維護需要用有發布許可權的賬號,進行包的發布。發布包需要先登入:
npm login
然後根據提示輸入:
username: test
password:
email: (this is public) [email protected]
logged in as test on
顯示以上內容為登入成功。登入成功後,在包的資料夾中輸入以下命令即可發布:
npm publish
顯示 + name@version 即為發布成功,成功後也可瀏覽器進入 檢視。
在專案中,我們要配置好package.json。
同時,我們的版本管理也需要更加嚴謹,維護好版本好的同時也要寫好更新說明,更新說明寫在元件的changelog.md中,這樣方便在瀏覽器瀏覽 的時候檢視。
版本號請遵循: semver 2.0 的語義化版本規則。
使用sinopia搭建自己的npm服務
隨著 的積累,感覺有必要自己搭建乙個npm服務,對自己的 庫進行管理。我去強大的github上搜尋了一下,發現了sinopia,純nodejs解決方案,不需要什麼依賴的軟體包。果然是簡單有效的辦法,於是根據教程嘗試了一下,基本沒遇到什麼坎就弄好了。首先安裝sinopia npm install g ...
helm部署和使用
helm是kubernetes的乙個包管理工具,用來簡化kubernetes應用的部署和管理。可以把helm比作centos的yum工具。helm有如下幾個基本概念 chart 是helm管理的安裝包,裡面包含需要部署的安裝包資源。可以把chart比作centos yum使用的rpm檔案。每個cha...
Kafka集群部署和使用
解壓 tar zxvf kafka 2.11 0.11.0.0.tgz c opt module 重新命名 mv kafka 2.11 0.11.0.0 kafka在 opt module kafka 目錄下建立 logs 資料夾 mkdir logs修改配置檔案 cd config vi serv...