因为负载均衡,每次前端开发完成;都需要先打包,然后在多台服务器上进行文件删除、文件上传的操作,多台打包比较麻烦。

考虑到自动多台打包部署问题,写一个自动部署。

本次用到shelljs和ssh2-sftp-client

自动部署思路

1、首先安装shelljs和ssh2-sftp-client

cnpm i shelljs ssh2-sftp-client --save-dev

shelljs做的事就是自动化,shelljs这个库能够让我们在js文件中执行shell命令。

ssh2-sftp-client​​ 基于 ​​ssh2​​ 库进行了封装,让 ​​文件传输​​ 相关的方法变得更为简洁,还支持了 ​​Promise​​ 。

2、package.json里面新增命令 upload

"scripts": {"lint-staged": "lint-staged","start": "cross-env NODE_ENV=development webpack-dev-server --config config/webpack.dev.config.js","publish": "cross-env NODE_ENV=production webpack --progress --config config/webpack.prod.config.js","upload": "node upload/index.js"},

3、新建upload文件夹,下面新建config和index文件

config文件中编辑服务器相关信息

module.exports = [//导出{ip: "",//主机ip地址username: '',//ssh用户名port: '',//ssh端口号password: '',//ssh密码path: '',//操作文件夹的配置地址路径rmovepath: ''//删除文件夹的配置地址路径}
];

index文件编辑打包及服务器操作命令

const config = require('./config.js');//引入config文件
const shell = require('shelljs');
const path = require('path');
const Client = require('ssh2-sftp-client');//打包npm run publish
const compileDist = async () => {if (shell.exec(`npm run publish`).code === 0) {console.log('打包成功');}
};async function connectShell() {config.map(item => {//遍历const sftp = new Client();sftp.connect({//连接服务器host: item.ip, // 服务器 IP  ssh地址port: item.port,username: item.username,// ssh 用户名password: item.password}).then(() => {console.log('先执行拉下文件备份');//sftp.downloadDir('第一个参数为拉取的路径,第二个参数为保存在本地的文件夹路径')return sftp.downloadDir(item.path, path.resolve('__dirname', `../dist1/${item.ip}`));//path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。}).then(() => {console.log('执行删除文件');//sftp.rmdir(删除服务器文件的路径)return sftp.rmdir(item.path, true);}).then(() => {console.log('执行上传文件');//sftp.uploadDir(第一个参数为本地上传文件路径,第二个为上传到服务器的路径)return sftp.uploadDir(path.resolve('__dirname', '../dist'), item.path);}).then(() => {console.log('上传完成');sftp.end();}).catch((err) => {console.log(err, '上传失败');sftp.end();});});
}async function runStart() {await compileDist();//等待打包成功await connectShell();//提交上传文件
}
runStart();

打包部署命令:npm run upload

前端自动打包部署服务器相关推荐

  1. 前端自动化打包部署服务器

    ssh2-sftp-client前端部署工具 npm install ssh2-sftp-client 在项目目录中创建upload文件夹,action.js主要处理打包和上传打包好的文件操作.sou ...

  2. python 自动化框架打包_听说很多人都不会打包,教你Python实现前端自动化打包部署!...

    作为一名专职前端开发的我,为了帮助解决目前工作中的一些繁琐的工作(主要是处理 excel数据),解放程序员双手,前阵子就刚刚入了 python 的坑,毕竟也算是门工具语言,都已经加入少儿编程了,哈哈哈 ...

  3. vuecli打包后的dist目录无法访问_听说很多人都不会打包,教你Python实现前端自动化打包部署!...

    作为一名专职前端开发的我,为了帮助解决目前工作中的一些繁琐的工作(主要是处理 excel数据),解放程序员双手,前阵子就刚刚入了 python 的坑,毕竟也算是门工具语言,都已经加入少儿编程了,哈哈哈 ...

  4. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  5. 自动打包linux,使用Jenkins如何自动打包部署linux

    使用Jenkins如何自动打包部署linux 发布时间:2020-11-25 14:47:07 来源:亿速云 阅读:86 作者:Leah 使用Jenkins如何自动打包部署linux?很多新手对此不是 ...

  6. 项目自动打包部署脚本

    项目自动打包部署脚本 本次自动打包部署依赖于git.maven来实现自动化部署项目 一.远程服务器安装git 检查git是否已安装: sh-3.2# git --version git version ...

  7. Springboot项目自动打包部署插件 (wagon-maven-plugin)

    Springboot项目自动打包部署插件 (wagon-maven-plugin) pom.xml文件添加配置: <properties>中添加: <service-path> ...

  8. vue打包部署服务器,背景图片显示空白

    vue打包部署服务器后,往往会出现部分背景图片显示空白的情况,部分就说明只是打包过程中的图片路径问题: 在build 文件夹中找到 utils.js文件加上这行代码即可:publicPath: '-/ ...

  9. node实现自动打包部署前端nuxt项目

    作为一个前端开发,本不需要自己部署项目,奈何天不遂人愿,活最终还是落到了自己头上,刚开始只是部署测试环境,只有一台服务器,手动部署以下也就算了,后面线上环境部署4台服务器,人当时就麻了 对于喜爱摸鱼的 ...

最新文章

  1. Mysql提示缺少表的别名报错_mysql对sql中别名引起的Column not found问题
  2. 今天参加面试 上机题,整理一下
  3. 汇编语言布尔表达式(NOT、AND、OR)
  4. Tampermonkey笔记-脚本的搭建和基本使用
  5. iPhone 13系列将搭载A15芯片:相比前代性能提升20%
  6. 一张思维导图,让正则表达式不再难懂
  7. Eclipse 中如何设置字体大小与样式
  8. 基于ASP.NET的网络购物系统设计与实现
  9. Android支付宝刷步数,支付宝刷步数教程(手机免ROOT)
  10. ps - 修改图片背景色、改变图片大小
  11. 【小样本基础】Meta-Learning 元学习流程:图解MAML代码
  12. 使用 NoSQL 数据库提供云级别数据可伸缩性
  13. ALESA切削刀具1355.3904-01
  14. 【机器学习】SVR支持向量机回归
  15. 基于sparkMLlib的机器学习_[1]_基本数据类型[4]分布式矩阵DistrubutedMatrix
  16. 手机User-Agent
  17. JavaScript if条件判断语句
  18. 前端CSS实现渐变效果
  19. 还敢买房的看看了,尖峰时刻之房价真相:上海vs东京(ZT)
  20. springboot学校快递站点管理系统的设计与实现 毕业设计-附源码111544

热门文章

  1. 寻找最幸福情侣,“百里挑一”胜“快女”海选
  2. powershell 将文本转换成表格的还有一种方式
  3. Kernel: XFS
  4. 小程序源码提取工具 完美解包,最新脚本,一键提取小程序源代码工具
  5. MySQL 8.0 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  6. pythonzeros函数_zeros函数是什么意思?python中np.zeros中的参数是什么意思
  7. 什么是跨域?什么情况下会发生跨域请求?
  8. android 自定义分辨率,Moonlight Android端自定义分辨率,解决黑边问题
  9. 全基因组关联分析(GWAS)流程
  10. 关于函数表达式的标识符/函数名