使用node脚本自动化服务器部署

E和弦的根音 · 2021-01-29 · 186 次浏览

前言

我们在开发完新功能或修改完bug后都会上测试环境测试, 流程如下:

  1. yarn build-dev打包静态文件
  2. 将打包好的dist文件夹压缩成.zip
  3. 打开钉钉/微信发给后台
  4. 后台同学收到后解压
  5. 解压后使用FileZilla上传到服务器指定文件夹下覆盖

这样的操作有时候一天要重复5次以上, TMD,烦死了 那么有没有什么方式可以在我输入打包命令后用我的小拇指轻轻按一下回车就完成上面的所有操作呢 且看下文

思路

yarn build-dev 小拇指回车

打包完成后自动执行一个js脚本文件

该js中使用ssh2-sftp-client模块连接服务器并上传本地dist文件夹到服务器指定文件夹下

编写脚本

在项目根目录下创建push.js文件

编写如下代码(打码仅供参考)

const Client = require('ssh2-sftp-client') // 安装 npm i ssh2-sftp-client -D

// 远程服务器推送
console.log('\x1b[32m 正在更新服务器资源 \x1b[;0m')
const user = {
  host: 'xxx.xx.xx.xxx',
  port: 22,
  username: 'root',
  password: '*********',
}

function main(localPath, romotePath) {
  // 实例化
  const sftp = new Client()
  sftp
    .connect(user)
    .then(() => {
      console.log('\x1b[32m 正在删除服务器目标文件夹 \x1b[;0m')
      return sftp.rmdir(romotePath, true)
    })
    .then(() => {
      console.log('\x1b[32m 正在上传资源文件 \x1b[;0m')
      return sftp.uploadDir(localPath, romotePath)
    })
    .then(() => {
      console.log('\x1b[32m 更新服务器资源完成! \x1b[;0m')
    })
    .catch((err) => {
      console.log('\x1b[32m 更新服务器资源失败: \x1b[;0m')
      console.log(err)
    })
    .finally(() => {
      // 断开连接
      sftp.end()
    })
}

main('./dist', '/test')

自动运行脚本

在package.json > scripts 下新增一个命令 这个命令会在执行完build-dev命令后执行

"postbuild-dev": "node push",

完工!

如果有错误或者不严谨的地方,请务必给予指正,十分感谢。如果喜欢或者有所启发,欢迎评论,对作者也是一种鼓励。
查看评论 - 0 条评论