本文為自己開發中的總結,有問題和錯誤歡迎指正
環境準備
到寫下本文時,本人環境版本如下
- Node: 12.16.3
- mysql: 8.0.19
- npm: 6.14.5
- 操作系統win10(cnpm不支持win部署,到時候可修改啟動命令,有Linux環境更佳)
安裝cnpmjs.org
git clone https://github.com/cnpm/cnpmjs.org.git
cd cnpmjs.org
npm install
以上都是前端常規操作,不做特殊介紹,可能出現安裝依賴報錯(我沒遇到),升級npm至最新版即可
創建數據庫
服務能不能起來,主要取決于數據庫的配置,和下面的配置,我們先把基礎配置配好,再去導入數據庫相關表。
- 首先,打開cnpmjs.org項目目錄下的config/index.js文件,我們需要配置數據庫的連接,找到如下字段:
database: {
db: 'cnpmjs',
username: 'root',
password: '******',
// the sql dialect of the database
// - currently supported: 'mysql', 'sqlite', 'postgres', 'mariadb'
dialect: 'mysql',
// custom host; default: 127.0.0.1
host: '127.0.0.1',
// custom port; default: 3306
port: 3306,
// use pooling in order to reduce db connection overload and to increase speed
// currently only for mysql and postgresql (since v1.5.0)
pool: {
maxConnections: 10,
minConnections: 0,
maxIdleTime: 30000
},
dialectOptions: {
// if your server run on full cpu load, please set trace to false
trace: true,
},
// the storage engine for 'sqlite'
// default store into ~/.cnpmjs.org/data.sqlite
storage: path.join(dataDir, 'data.sqlite'),
logging: !!process.env.SQL_DEBUG,
},
- db配置為你將要創建的數據庫名稱,包括你的數據庫用戶名和密碼,這里我使用的是我的本地用戶名和密碼,將來可用生產數據庫。
- dialect:該字段默認為sqlite,因為我這里使用的是Mysql,需要改成'mysql'
- 其他字段不變,先采用默認值。
以上是數據庫連接的相關配置,該配置文件中,還有其他配置項需要注意,這里參考以下博客
https://blog.csdn.net/weixin_34138255/article/details/91371514
- 導入數據庫
本人數據庫菜鳥,全部使用圖形化操作,我使用的Navicat。
- 創建數據庫,名字為以上配置文件中的名字,如'cnpmjs'
- 導入數據庫配置文件(右擊'表',點運行SQL文件,常規操作不再贅述)
- 配置文件位于 \docs\db.sql,正確的導入會生成16張表。(表的數量以及其他數據庫配置和cnpmjs的版本有關,我們之前安裝的是最新版,這里是16張表)
啟動項目
上面對照著文檔已經推薦鏈接中的博客,配置沒問題的話就可以啟動,我使用的是
node dispatch.js
服務起來后,會在本地localhost或(127.0.0.1)下起兩個端口,其中7002是web端口,通過瀏覽器訪問,7001是服務端口,用于將來管理代碼。連個端口都可配置,在上面配置文件中比較容易找到,沒啥特殊情況,建議采用默認配置。
我們瀏覽器訪問7002就可以看到CNPM的界面了。
如果你的環境版本都是最近的新版本,應該不會出現什么問題
同步數據
考慮到我們的開發環境為內網,不具備互聯網,這里得需要我們手動去同步NPM到我們的私有倉庫(時間很長,文件很多,很占內存)
同步方式
我們先嘗試著在我們現有的倉庫內搜某有個包,這時候會出現找不到包,下面的提示頁面中就會有同步NPM的操作,點擊同步就行了,第一次同步時間相當漫長,期間不要切換頁面,因為我們在本地安裝搭建的環境,模塊的資源都是保存到本地的,我同步了10分鐘,大概4千多個包測試了一下,占了我盤3G內存,心塞關掉,經測試,這一塊沒問題,到時候生產也這么做就行。
發布npm包
和發布npm的過程類似。大概過程分為:
- 你得有一個cnpm私服的賬號
- 根目錄下執行npm adduers,添加用戶名密碼
- 運行npm publish,將包發布到npm倉庫中,但是,我們的倉庫名很容易和線上已有包重名,造成發布失敗,這就需要我們把名字起的獨特一點,如果你的在cnpm私庫下面,還需要有作用域來解決這一問題。
npm install 試試使用的庫吧!
寫在最后
按照網上教程走下來的,基本數據庫配置沒有問題,就不會有啥問題。
ok,就這樣了,
(完)