最近的Node項目中因為數據模型等問題,需要有一個對各個模塊進行統一的管理,如果把私有的模型publish到公共的npm不太合適,所以決定使用cnpm搭建一個私有的npm,同時也可以對項目常用的npm模塊做一個緩存,加快部署速度。
搭建的過程還是比較簡單,參考cnpm的Deploy很快搭建起來,給大家分享一下。
服務器環境:
- Ubuntu Server 14.04
- Node.js v0.12.0
- MySQL 5.5
因為cnpm使用了--harmony
參數,所以需要Node版本大於0.11.12,所以就直接上了最新的v0.12.0,沒有MySQL也沒關系,可以直接使用sqlite3。
Clone源碼並導入SQL
(MySQL用戶名:root 密碼:root,數據庫名:cnpm,項目和數據放在~/cnpm)
# clone from github $ git clone git://github.com/cnpm/cnpmjs.org.git $HOME/cnpm $ cd $HOME/cnpmjs # create mysql tables $ mysql -uroot -proot -e 'DROP DATABASE IF EXISTS cnpmjs;' $ mysql -uroot -proot mysql> use cnpmjs; mysql> source docs/db.sql
創建並編輯config.js
$ vim config/config.js
module.exports = { debug: false, scopes: ['@superid'], enableCluster: true, // enable cluster mode mysqlServers: [ { host: 'localhost', port: 3306, user: 'root', password: 'root', } ], mysqlDatabase: 'cnpm', enablePrivate: true, // enable private mode admins: { admin: 'yourtion@gmail.com', }, syncModel: 'exist'// 'none', 'all', 'exist' };
安裝依賴並啟動運行
$ make install $ npm run start
檢查運行
#open registry and web # registry $ curl http://localhost:7001 # web $ curl http://localhost:7002
看到7001
返回json數據,而7002
返回HTML源代碼就是運行成功。
客戶端設置
首先安裝cnpm,並設置~/.cnpmrc
:
$ sudo npm install -g cnpm $ vim ~/.cnpmrc
設置registry=http://127.0.0.1:7001
(127.0.0.1
改為你的服務器ip)
這樣就可以正常的publish私有模塊以及使用cnpm的緩存服務了。
有幾個需要注意的點:
- 因為需要創建私有倉庫並且保證有權限才能publish模塊,所以
config.js
中enablePrivate
必須設為true
; - 為了保證私有的庫不與公開npm沖突,
config.js
中需要設置scopes
數組為你的公司名或者項目代號,publish的模塊名為@superid/myModel
;