使用cnpm搭建企業內部私有NPM倉庫


cnpm是企業內部搭建npm鏡像和私有npm倉庫的開源方案。它同時解決了現有npm架構的一些問題

為什么企業需要私有NPM

主要有如下理由:

  • 確保npm服務快速、穩定:對於企業來說,上線生產系統的時候,需要花半小時甚至更久等待npm模塊依賴安裝完畢,是不可接受的。部署鏡像后,可以確保高速、穩定的npm服務。
  • 發布私有模塊:官方的npm上的模塊全部是開源的。一些與企業業務邏輯相關的模塊可能不適合開源。這部分私有的模塊放在私有NPM倉庫中,使用起來各種方便。
  • 控制npm模塊質量和安全:npm上的模塊質量參差不齊,搭建私有倉庫,可以更嚴格地控制模塊的質量和安全,只有經過審核的模塊才允許被加入私有倉庫。

cnpm的特點

  • 壓縮包等文件從數據庫中分離,放在CDN上,減輕了數據庫的壓力,提高了訪問速度。
  • 使用MySQL替換了CouchDB,更容易部署。同時由於大部分開發者更熟悉MySQL,因此架設起來更方便。
  • CDN和MySQL都可以方便地擴展。

cnpm架構

5分鍾部署

部署cnpm只需5分鍾。

依賴

  • Node
  • MySQL
  • Redis
  • qiniu CND (或其他CDN)

部署過程

獲取代碼

git clone git://github.com/fengmk2/cnpmjs.org.git $HOME/cnpmjs.org cd $HOME/cnpmjs.org 

創建MySQL表

; mysql -u yourname -p
mysql> use cnpmjs; mysql> source docs/db.sql 

然后編寫配置文件config/config.js

module.exports = { debug: false, enableCluster: true, // enable cluster mode mysqlServers: [ { host: 'localhost', port: 3306, user: 'cnpmjs', password: 'cnpmjs123', } ], mysqlDatabase: 'cnpmjstest', redis: { host: 'localhost', port: 6379, }, nfs: null, //use your own CND here enablePrivate: true, // enable private mode, only admin can publish, other use just can sync package from source npm admins: { admin: 'admin@cnpmjs.org', }, syncModel: 'exist' }; 

安裝依賴

make install 

啟動

; npm run start Starting cnpmjs.org ... Start nodejs success. PID=27175 

好了,部署完成!

客戶端設置

服務跑起來之后,企業員工需要在自己的電腦上配置下客戶端。

首先安裝cnpm客戶端:

npm install -g cnpm 

在自己的腳本的啟動文件(例如.zshrc.bashrc)中添加別名:

echo "#lnpm alias\nalias lnpm='cnpm --registry=http://localhost:7001\ --registryweb=http://localhost:7002\ --cache=$HOME/.npm/.cache/lnpm\ --userconfig=$HOME/.lnpmrc'" >> $HOME/.zshrc && source $HOME/.zshrc 

注意用自己的倉庫信息替換上面命令的相關部分。

之后就可以用lnpm命令訪問企業的內部NPM了,各種接口和NPM一樣。

注意,目前cnpm的權限控制比較簡單,只有admin用戶有權publishNPM模塊。如果你的企業需要靈活的權限控制,需要自行開發。


免責聲明!

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



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