在开发环境中,启动一个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) // ...

来源:https://segmentfault.com/a/1190000017135577

结合 Shell 对 Koa 应用运行环境检查的更多相关文章

  1. 通过shell快速配置J2EE运行环境

    虽然可以通过已经配置好的docker镜像来快速运行相关环境, 但是 现实往往就是这么残酷+有钱很任性的时候 就是给出了一个装好系统的电脑让配置环境,每次的配置环境变量真的很烦 纯体力活 就简单的写个脚 ...

  2. Java开发和运行环境的搭建

    Java开发需要准备的东西? JDK+Eclipse 其中JDK的意思是Java开发工具包,Eclipse是进行用于做Java程序开发的工具(当然你也可以用记事本什么的去做). 其他开发工具:JCre ...

  3. Linux:Ubuntu下部署Web运行环境

    Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...

  4. 理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  5. 使用Docker搭建Java Web运行环境

    这周末体验了一下挺火的Docker技术,记录学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发 ...

  6. 如何在Mac OS X上安装 Ruby运行环境

    对于新入门的开发者,如何安装 Ruby和Ruby Gems 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境.此安装方法同样适用于产品环境! 系统需求 首先确定操 ...

  7. 9款一键快速搭建PHP运行环境的好工具

    9款一键快速搭建PHP运行环境的好工具 胡倡萌 2011/02/19 网络资源 77,063 1     内容提要: 建立一个PHP网站,首先需要搭建PHP的开发和运行环境,对于PHP初学者也是一个难 ...

  8. PsySH:PHP交互运行环境

    是什么 我们经常会在命令行用到诸如mysql.python等命令,特点是一旦输入后,会进入命令本身的交互运行环境.示例: [root@iZ25vs3mckhZ ~]# python Python 2. ...

  9. Windows 8 IIS中配置PHP运行环境的方法

    在Windows 8 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 1.进入控制面板>>程序和功能>>打开或关闭Windows 功能,找到Internet信息 ...

随机推荐

  1. JDK、JRE与JVM之间的关系

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧: JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Env ...

  2. C++算法 线段树

    线段树这个算法,看起来非常高端,而且很有用处,所以还是讲一下下吧. 温馨提示:写线段树前请做好写码5分钟,调试一辈子的准备^-^ 啊直接步入正题…… 首先我们考虑一个题目:有一个序列,要做到单点修改单 ...

  3. ClassFile与JClass

    本次大作业中 java程序——>二进制流(byte[ ]表示)——>ClassFile对象——>JClass ClassFile的字段:magic,minorversion..... ...

  4. 经典DP动规 0-1背包问题 二维与一维

    先上代码 b站讲解视频 灯神讲背包 #include <iostream> #include <cstring> #include <algorithm> usin ...

  5. Python 快速验证代理IP是否有效

    有时候,我们需要用到代理IP,比如在爬虫的时候,但是得到了IP之后,可能不知道怎么验证这些IP是不是有效的,这时候我们可以使用Python携带该IP来模拟访问某一个网站,如果多次未成功访问,则说明这个 ...

  6. Android开发之模拟器genymotion安装apk出现错误: Install_failed_invalid_URI

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. install failed invalid uri Android开发之模拟器ge ...

  7. 蒲公英 &#183; JELLY技术周刊 Vol.21 -- 技术周刊 &#183; React Hooks vs Vue 3 + Composition API

    蒲公英 · JELLY技术周刊 Vol.21 选 React 还是 Vue,每个人心中都会有自己的答案,有很多理由去 pick 心水的框架,但是当我们扪心自问,我们真的可以公正的来评价这两者之间的差异 ...

  8. 测试JsonAnalyzer2的12个测试用例:

    测试用例如下: 01. Compact json text={"status":"","message":"success&quo ...

  9. HTTP 协议类

    HTTP 协议的主要特点 简单快速:每个资源的URL是固定的 灵活:在每个 http 协议中都有一个头部分有一个数据类型,通过一个 http 协议就可以完成不同数据类型的传输 无连接:连接一次就好断掉 ...

  10. [转载] 微软发布 SURFACE DUO ANDROID SDK 和模拟器

    模拟器截图 微软今天发布了双屏折叠设备 Surface Duo Android 开发工具(SDK 和模拟器),Windows 10X 开发工具和模拟器之后 2 月 11 日发布,并宣布了新的针对双屏体 ...