node 自动上传文件到服务器,NODE 自动部署 从打包到上传服务器

每次项目打包后,需要先 npm run build ,然后将项目打包成 zip ,再上传到服务器解压,特别的繁琐,于是写了一个小脚本,完成一系列的操作。

此处服务器用的是 centos 系统。

安装需要用到的包

cnpm i compressing ssh2 --save-dev

代码

/* eslint-disable */

const {exec} = require('child_process')

const compressing = require('compressing')

const Client = require('ssh2').Client

const server = {

host: 'localhost', // 服务器地址

port: 22, // 端口号

username: 'root', // 用户名

password: '123456' // 密码

}

const connect = new Client()

function conn() { // 连接服务器

console.log('*******连接服务器*******')

connect.on('ready', () => {

upload()

}).on('error', (err) => {

console.error(err)

console.log('*******连接出错*******')

}).on('end', () => {

console.log('*******连接关闭*******')

}).on('close', (err) => {

if (err) {

console.log('*******连接出错*******')

}

}).connect(server)

}

function upload() { // 上传

console.log('*******开始上传*******')

connect.sftp((err, sftp) => {

if (err) throw err

// 第一个参数为要上传的文件名, 第二个参数为服务器目录

sftp.fastPut('dist.zip', '/home/yunwo/front/pc_vue/dist.zip', (err, res) => {

if (err) {

console.log(err)

console.error('*******上传失败*******')

connect.end()

return

}

unzipShell()

})

})

}

function unzipShell() { // 服务器解压命令

connect.shell((err, stream) => {

console.log('*******解压中*******')

if (err) throw err

let buf = "";

stream.on('close', err => {

connect.end()

if (err) {

console.error(err)

return

}

console.info('******* SUCCESS!! *******')

}).on('data', data => {

buf += data

console.log(buf)

})

// 服务器端的命令行运行

// 主要就是到目录下解压文件后复制到上一层

// 再删除掉解压出来的文件夹

stream.write('cd /home/yunwo/front/pc_vue/ && unzip dist.zip \nnext\n')

stream.write('cd dist && /bin/cp -r -f * ../ \nnext\n')

stream.write('cd ../ && rm -r -f dist \nexit\n')

})

}

function compress() { // 压缩命令

console.log('********压缩中********')

// 此处第一个参数为要打包的目录, 第二个参数是打包后的文件名

compressing.zip.compressDir('dist/', 'dist.zip').then(() => {

console.log('*******压缩成功*******')

conn()

})

}

console.log('********打包中********')

// 运行 'npm run build' 命令

const bat = exec('npm run build', (err, stdout, stderr) => {

if (err) {

console.error(`exec error: ${err}`);

return;

}

console.log('*******打包成功*******')

compress()

})

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值