使用shelljs和ssh2-sftp-client实现前端一键打包部署服务器

由于现在打包项目部署服务器是前端完成, 之前通过FTP或者SCP等软件完成上传,又或者是交给后端通过git推送拉取来部署, 几个服务器就要重复几遍操作, 感觉很麻烦, 所以找到了这种办法! 分享一下。

一、shelljsssh2-sftp-client

ShellJS

ShellJS是基于Node.js API的Unix shell命令的可移植(Windows/Linux/macOS)实现。您可以使用它来消除shell脚本对Unix的依赖,同时仍然保留其熟悉而强大的命令。您也可以全局安装它,这样您就可以在Node项目外部运行它。

ssh2-sftp-client

ssh2-sftp-client是一个用于node.js的SFTP客户端,一个围绕SSH2的包装器,它提供了一个高层次的方便抽象和一个基于Promise的API。

什么?你说你看不懂? 没关系, 因为我也看不懂...

shelljs这个库能够让我们在js文件中执行shell命令。shelljs做的事就是自动化,从耗时的重复性常规动作里解放出来,提升开发效率和工作心情(奇怪工作能有什么心情...)。

ssh2-sftp-client是一个用于在Node.js中进行SSH文件传输的库。用于连接到远程服务器并执行各种文件传输操作,如上传、下载、删除和重命名文件等。

二、使用

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

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

2.新建文件夹(如:upload), 然后文件夹里新建config.js用来存放服务器的配置和index.js用来存放上传脚本的代码
3.config.js中导出服务器的配置
JavaScript 复制代码
module.exports = [
  {
    ip: "xx.xxx.xxx.xxx",//服务器ip地址
    username: '',//ssh用户名
    port: '',//ssh端口号
    password: '',//ssh密码
    path: '如: /data/abc/xxx',//操作文件夹的配置地址路径
    rmovepath: '/data/abc/xxx'//删除文件夹的配置地址路径
  }
];

配置好服务器之后, 我们去写index.js

4.index.js

这里面由于我不需要备份所以第一个then被注释掉了

下面是connect方法的其他配置项

  • host:SFTP服务器的主机名或IP地址。
  • port:SFTP服务器的端口号,默认为22。
  • username:连接SFTP服务器的用户名。
  • password:连接SFTP服务器的密码。
  • privateKey:连接SFTP服务器的私钥文件路径。
  • passphrase:私钥文件的密码(如果有)。
  • agent:SSH代理的套接字路径。
  • agentForward:是否启用SSH代理转发。
  • localHostname:本地主机名。
  • localUsername:本地用户名。
  • tryKeyboard:是否尝试使用键盘交互进行身份验证。
  • keepaliveInterval:保持活动连接的间隔时间(以毫秒为单位)。
  • keepaliveCountMax:保持活动连接的最大尝试次数。
  • readyTimeout:等待SFTP服务器准备就绪的超时时间(以毫秒为单位)。
  • debug:是否启用调试模式。
5.这里要说一下有私钥的情况!

如果上传服务器时需要认证私钥, 请先将私钥文件(如:id_rsa)转换为.pem文件, 不然会报错, 然后在connect方法中加入对应的配置, 如下:

准备好.pem文件,如下:

然后在connect中加入参数即可,如下:

4.执行命令

你可以选择在package.json中添加命令, 然后可以使用VSCode一键运行 如下:

也可以选择直接在终端里输入node upload/index.js运行

三、注意!!!

最后的最后的最后, 如果你的项目需要上传到gitee等远程仓库,请一定要忽略掉关于服务器的配置的文件, 不然...

.gitignore中添加对应的文件夹/文件即可

到这里, 此次分享就结束了, 如有错误的地方, 欢迎指出,我会加以改正!:)

相关推荐
阿珊和她的猫4 分钟前
以用户为中心的前端性能指标解析
前端·javascript·css
木心术14 分钟前
OpenClaw网页前端开发与优化全流程指南
前端·人工智能
Amumu121385 分钟前
HTML5的新特性
前端·html·html5
SeSs IZED11 分钟前
【Nginx 】Nginx 部署前端 vue 项目
前端·vue.js·nginx
成都渲染101云渲染666622 分钟前
跳出“硬件堆砌”陷阱|渲染101如何用技术重构云渲染的专业价值?
java·前端·javascript
快乐点吧28 分钟前
【前端】前端开发中如何高效利用 curl 工具
前端·状态模式
橘子编程36 分钟前
OpenClaw(小龙虾)完整知识汇总
java·前端·spring boot·spring·spring cloud·html5
SuperEugene41 分钟前
Vue3 性能优化规范:日常必做优化(不玄学、可落地)|可维护性与兜底规范篇
开发语言·前端·javascript·vue.js·性能优化·前端框架
Binary-Jeff41 分钟前
Spring 创建 Bean 的关键流程
java·开发语言·前端·spring boot·后端·spring·学习方法
若年封尘1 小时前
告别手写 API 类型:用 openapi-fetch 打造类型安全的前端接口层
前端·安全·openapi-fetch