上上篇小作文说了如何实现打包后 一条命令自动部署 ,经过两天时间,我又变懒了,我想要用一条命令实现打包并自动部署,毕竟能一步实现的事情我干嘛走两步? 只需要两小步改动便可以实现
1,在之前的自动上传命令执行之前,先执行打包命令
const config = require('./config.js')
const shell = require('shelljs')
const path = require('path')
let Client = require('ssh2-sftp-client')
// 打包 npm run build
const compileDist = async () => {
if (shell.exec(`npm run build`).code == 0) {//判断是否打包完成
console.log("打包成功")
}
}
async function connectSSh () {
let sftp = new Client()
sftp.connect({
host: config.ip, // 服务器 IP
port: config.port,
username: config.username,
password: config.password
}).then(() => {
console.log("先执行删除服务器文件")
return sftp.rmdir(config.rmpath, true)
}).then(() => {
// 上传文件
console.log("开始上传")
return sftp.uploadDir(path.resolve(__dirname, '../dist'), config.path)
}).then(() => {
console.log("上传完成")
sftp.end()
}).catch((err) => {
console.log(err, '失败')
sftp.end()
})
}
async function runTask () {
shell.exec(`npm run build`) //这里添加一条打包命令
await compileDist() //打包完成
await connectSSh() //提交上传
}
runTask()
2,修改打包命令
修改打包命令,upload改为BAU。--意思为 build and upload
这样就行啦,完活!