使用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中添加对应的文件夹/文件即可

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

相关推荐
崔庆才丨静觅6 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60617 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了7 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅7 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅8 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment8 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅8 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊8 小时前
jwt介绍
前端
爱敲代码的小鱼8 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax