结合 Shell 对 Koa 应用运行环境检查
在开发环境中,启动一个koa 应用服务,通常还需要同时启动数据库。比如。Mongodb、mysql 等
如果一直开着数据库服务,在不使用的话,电脑会占一定的性能。然而如果每次手动去启动服务,效率又不高。因此如果我们在执行npm run start
启动 koa 应用时,如果可以提前把需要的服务启动起来,那么就会效率高很多。
简单来说就是把我们平时运行的命令写成脚本,在启动时运行即可。
这里以mongodb 为例说明这个过程。
一、mongodb 启动脚本
我们在应用目录下新建脚本文件
/post-process/sh/mongodb.sh
#!/usr/bin/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) // ...
相关推荐
huha 2020-10-16
laisean 2020-11-11
大牛牛 2020-10-30
firefaith 2020-10-30
liguojia 2020-10-20
wangzhaotongalex 2020-10-20
以梦为马不负韶华 2020-10-20
JohnYork 2020-10-16
Julyth 2020-10-16
applecarelte 2020-10-16
laisean 2020-09-27
flycappuccino 2020-09-27
liguojia 2020-09-27
wangzhaotongalex 2020-09-22
流年浅滩 2020-10-23
liujianhua 2020-10-22
woaimeinuo 2020-10-21
tufeiax 2020-09-03
laisean 2020-09-01
vvu 2020-09-16
libao 2020-09-16
Yyqingmofeige 2020-08-18
zhushixia 2020-08-17