結合 Shell 對 Koa 應用運行環境檢查
阿新 • • 發佈:2018-12-22
resolv 應用服務 onf enc shell 腳本 exce 需要 執行 depend 二、利用
在開發環境中,啟動一個koa 應用服務,通常還需要同時啟動數據庫。比如。Mongodb、mysql 等
如果一直開著數據庫服務,在不使用的話,電腦會占一定的性能。然而如果每次手動去啟動服務,效率又不高。因此如果我們在執行npm run start
啟動 koa 應用時,如果可以提前把需要的服務啟動起來,那麽就會效率高很多。
簡單來說就是把我們平時運行的命令寫成腳本,在啟動時運行即可。
這裏以mongodb 為例說明這個過程。
一、mongodb 啟動腳本
我們在應用目錄下新建腳本文件
/post-process/sh/mongodb.sh
dbPath=$HOME/Documents/database/mongo-db #start up mongod service # 這裏把mongodb 服務後臺運行,錯誤輸出重定向到 ./logs/mongod.log mongod --dbpath ${dbPath} > ./logs/mongod.log &
二、利用child-process
運行shell 腳本
結合nodejs 的 child_process
模塊,寫一個運行腳本的方法:
// post-process/index.js const { exec } = require(‘child_process‘); /** * 執行一個 shell 腳本 * @param {*} shell */ const excecShell = (shell) => { exec(`sh ${shell}`, (err, stdout, stderr) => { if (err) { console.log(err) return true } else { console.log(stdout) } }) } /** * 檢查依賴,其實就是運行一系列腳本 */ const dependencyCheck = (shellArray) => { if (Array.isArray(shellArray)) { shellArray.map(item => excecShell(item)) } else { console.log(‘Illeagal shell queue!‘) } } module.exports = { excecShell: excecShell, dependencyCheck: dependencyCheck }
三、把檢查過程寫到config.js 中
還可以把我的執行檢查寫道config.js 中:
// config/index.js const fs = require(‘fs‘) const path = require(‘path‘) let scriptPath = path.resolve(path.join(‘./post-process/sh‘)) //console.log(scriptPath) module.exports = appConfig => { // 省略 ... config = { preChecksScripts: [ `${scriptPath}/mongodb.sh` ], } return config }
四、app.js 中執行檢查過程:
const Koa = require(‘koa‘)
const app = new Koa()
const appConfig = require(‘./config‘)()
// 省略...
// 環境檢查腳本
const preCheckTool = require(‘./post-process‘)
// 需要檢查的腳本數組
const checkScripts = appConfig.preChecksScripts
preCheckTool.dependencyCheck(checkScripts)
// ...
來源:https://segmentfault.com/a/1190000017135577
結合 Shell 對 Koa 應用運行環境檢查