想直接使用的,github 传送门 - git上有详细配置,记得留个star,笔心
但最近做的项目修改频繁,每次部署都是先打包,然后手动拷贝到远程服务器,次数多了有点麻烦,身为一个程序员,秉着偷懒的原则,程序能完成的重复工作绝不自己完成,于是就写了个Node小脚本。
在写脚本之前,我们需要了解下package.json,nodejs工程的自动化是依赖于package.json文件中的scripts配置项来实现的,例如使用vue-cli搭建的工程中就会带有:
{
...
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
...
}
当我们在命令行执行:npm run serve ,其实是在执行vue-cli-service serve,我们也可以自己写一个自动部署脚本:
当我们在命令行执行:npm run serve ,其实是在执行vue-cli-service serve,我们也可以自己写一个自动部署脚本:
我们希望脚本能在npm run build之后自行执行,这里可以利用npm声明周期中的post钩子:
"scripts": {
"build": "node start.js",
"dev": "node satrt.js",
"postbuild": "node deploy.js"
},
这里稍微解释下npm 声明周期,我觉得最有用的就是pre和post,如果你想在某个脚本执行完之后执行其他脚本,可以使用前缀+脚本名,这里使用的是postbuild,同理,prebuild就是在执行build之前执行其他脚本。
脚本流程如下:
1.登陆服务器,读取服务器网站目录列表,选择上传的目录(你也可以新建目录)
2. 备份服务器之前的文件,然后覆盖上传。
3.上传完毕
const path = require('path')
const moment = require('moment')
const util = require('util')
const events = require('events')
const Client = require('ssh2').Client
const fs = require('fs')
const ProgressBar =require('progress');
const inquirer=require('inquirer')
//cnpm in