您好,登錄后才能下訂單哦!
目前使用的技術(shù)棧是:前端Vue、后端Koa、數(shù)據(jù)庫(kù)Mongodb。
然而每當(dāng)起服務(wù)的時(shí)候,都要 npm start 、 node ./server/app.js ,還要同時(shí)保持這兩個(gè)窗口一直是開著的,很是麻煩。
而且因?yàn)槲沂褂玫氖莐oa,也沒有使用狼叔寫的koa腳手架。是自己基于廖雪峰老師的 Koa框架 改的一個(gè)小型mvc。導(dǎo)致沒有熱更新。
為了簡(jiǎn)化這種沒必要的操作及增加熱更新,開始想怎么進(jìn)行優(yōu)化。于是選擇了 pm2
配置pm2
先安裝pm2: npm i pm2 、 npm i pm2 -g
因?yàn)槭情_源項(xiàng)目,為了讓代碼能再別人的電腦上跑起來(lái),需要讓pm2存在項(xiàng)目里。然后在全局安裝,方便后期調(diào)試
再項(xiàng)目的根目錄里創(chuàng)建logs目錄
在當(dāng)前的目錄創(chuàng)建一個(gè)pm2.json的文件,內(nèi)容如下:
{ "apps": [{ "name": "koler-server", "script": "./app.js", "error_file" : "../logs/server-err.log", "out_file" : "../logs/server-out.log", "merge_logs" : true, "log_date_format" : "YYYY-MM-DD HH:mm Z", "cwd": "./server", "watch": [ "app.js", "controllers" ], "watch_options": { "followSymlinks": false } },{ "name": "koler-app", "script": "./build/dev-server.js", "error_file" : "./logs/app-err.log", "out_file" : "./logs/app-out.log", "merge_logs" : true, "log_date_format" : "YYYY-MM-DD HH:mm Z", "cwd": "./", "ignore_watch" : [ "node_modules" ], "watch_options": { "followSymlinks": false } }] }
這里同時(shí)啟動(dòng)兩個(gè)項(xiàng)目。
koler-server 是koa, koler-app 是前端vue。
我嘗試了一下把
"error_file" : "./logs/app-err.log", "out_file" : "./logs/app-out.log", "merge_logs" : true, "log_date_format" : "YYYY-MM-DD HH:mm Z",
代碼提升到j(luò)son的根部,但是發(fā)現(xiàn)不起作用。看來(lái)pm2不支持這種。所以只能在每個(gè)服務(wù)里寫了。
配置package.json
替換之前的 script 字段下的 dev ,然后再增加 stop 字段,替換后如下:
"scripts": { "dev": "pm2 start pm2.json && pm2 logs", "start": "npm run dev", "stop": "pm2 stop koler-app koler-server && pm2 delete koler-app koler-server", "build": "node build/build.js", "lint": "eslint --ext .js,.vue src" },
pm2 start pm2.json && pm2 logs 是基于pm2.json文件配置啟動(dòng),后面的 pm2 logs 是為了同時(shí)跟蹤vue和koa的反饋日志。
輸入 npm start 后。終端如下:
我這里不知道為什么。每次 npm start 都會(huì)爆出來(lái)如下的錯(cuò)誤:
1|koler-ap | 2017-10-23 19:45 +08:00: 1|koler-ap | ┌────────────────────────────────────────────────────────────┐ 1|koler-ap | │ npm update check failed │ 1|koler-ap | │ Try running with sudo or get access │ 1|koler-ap | │ to the local update config store via │ 1|koler-ap | │ sudo chown -R $USER:$(id -gn $USER) C:\Users\158bl\.config │ 1|koler-ap | └────────────────────────────────────────────────────────────┘
單獨(dú)啟動(dòng)是沒有任何問題的,但是項(xiàng)目還是能照常跑起來(lái)??赡苁莕odejs或者pm2的bug吧(因?yàn)椴恢朗悄睦锏腷ug,就不去github上提issue了)
啟動(dòng)后,你的屏幕會(huì)出現(xiàn)一個(gè)cmd窗口,不用關(guān),過一會(huì)它會(huì)自行關(guān)閉的。每次修改代碼觸發(fā)pm2配置文件里 watch 規(guī)則時(shí),就會(huì)自動(dòng)彈出一個(gè)cmd窗口,也是過一會(huì)關(guān)閉。
因?yàn)槠渌?xiàng)目使用者可能會(huì)在電腦上跑多個(gè)pm2實(shí)例,所以在 stop 字段里,我跟上了名字。防止出現(xiàn)把所有的實(shí)例全部暫定刪除了。
測(cè)試
現(xiàn)在我們更改代碼發(fā)現(xiàn)沒有任何問題,pm2會(huì)幫助我們自動(dòng)進(jìn)行熱更新。現(xiàn)在我們故意改錯(cuò)一段vue的代碼試試:
可以發(fā)現(xiàn)已經(jīng)OK了。
這里說明一下為什么在pm2.json配置文件里的第二個(gè)實(shí)例 koler-app 沒有watch,因?yàn)関ue在開發(fā)環(huán)境下使用的是wenpack的watch,所以不需要加。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。