express本地启动vue项目build包检测

428 阅读3分钟

应用场景

实际项目开发中遇到如下场景:

  1. 公司jenkins并未配置前端自动化部署,且jenkins的内部配置,前端无法更改的情况下,
  2. 公司接口代理在后端进行,杜绝了跨域问题
  3. 前后端异地开发,为了减少后端/运维部署出现页面问题导致重新部署

为了解决如上问题,无奈之下,只能在搭建一个express+pm2的本地脚本进行页面检测

功能实现

首先我们建立一个app.js的文件,放在与package.json同级的文件下,后续我们会通过bat脚本将app.js打包复制到打包文件内。

端口声明

在app.js内声明要访问的项目端口:

// 端口声明
const port = 3000

IP获取

不同的电脑会有不同的ip配置,我们在后面的请求中,或者打开浏览器中需要获取到本地的ip。

获取ip我们通过os模块获取:

const os = require('os');
///获取本机ip///
function getIPAdress() {
    const interfaces = os.networkInterfaces();
    for (let devName in interfaces) {
        let iface = interfaces[devName];
        for (let i = 0; i < iface.length; i++) {
            let alias = iface[i];
            if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
                return alias.address;
            }
        }
    }
}

express本地服务搭建

引入模块

首先我们引入所需的模块

/**
 * @private
 * @param {string} staticPath
 * @example express.static = require('serve-static')(staticPath);
 */

let express = require('express');
let open = require('open')

如上所示:我们引入了所需的express模块进行服务搭建,以及open模块进行浏览器自启动。

服务搭建与静态文件配置

之后我们通过执行express模块,并且使用static配置静态文件

let app = express();
app.use(express.static(__dirname))
app.use(express.static("要配置的静态文件"));

监听端口

通过listen方法监听我们前面声明的端口,之后通过open打开浏览器页面

app.listen(port, function() {
    console.log(`server start: http://${getIPAdress()}:${port}`);
})
open(`http://${getIPAdress()}:${port}`)

启动服务

在express搭建完成之后执行命令node app.js

pm2守护进程

安装

使用npm进行安装即可

npm install -g pm2

常用指令

pm2 start app.js               # 启动app.js应用程序
pm2 start app.js -i 4          # cluster mode 模式启动4个app.js的应用实例
                               # 4个应用程序会自动进行负载均衡
pm2 start app.js --name="api"  # 启动应用程序并命名为 "api"
pm2 start app.js --watch       # 当文件变化时自动重启应用
pm2 start script.sh            # 启动 bash 脚本
pm2 list                       # 列表 PM2 启动的所有的应用程序
pm2 monit                      # 显示每个应用程序的CPU和内存占用情况
pm2 show [app-name]            # 显示应用程序的所有信息
pm2 logs                       # 显示所有应用程序的日志
pm2 logs [app-name]            # 显示指定应用程序的日志
pm2 flush                      # 清空所有日志文件
pm2 stop all                   # 停止所有的应用程序
pm2 stop 0                     # 停止 id为 0的指定应用程序
pm2 restart all                # 重启所有应用
pm2 reload all                 # 重启 cluster mode下的所有应用
pm2 gracefulReload all         # Graceful reload all apps in cluster mode
pm2 delete all                 # 关闭并删除所有应用
pm2 delete 0                   # 删除指定应用 id 0
pm2 scale api 10               # 把名字叫api的应用扩展到10个实例
pm2 reset [app-name]           # 重置重启数量
pm2 startup                    # 创建开机自启动命令
pm2 save                       # 保存当前应用列表
pm2 resurrect                  # 重新加载保存的应用列表
pm2 update                     # Save processes, kill PM2 and restore processes
pm2 generate                   # Generate a sample json configuration file

pm2守护进程

之后通过执行pm2 start app.js命令我们就可以在后台运行本地打包的vue项目了。