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

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

相关推荐
EricWang135817 分钟前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning17 分钟前
React.lazy() 懒加载
前端·react.js·前端框架
web行路人27 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
超雄代码狂1 小时前
ajax关于axios库的运用小案例
前端·javascript·ajax
长弓三石1 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程1 小时前
【前端基础】CSS基础
前端·css
嚣张农民1 小时前
推荐3个实用的760°全景框架
前端·vue.js·程序员
周亚鑫2 小时前
vue3 pdf base64转成文件流打开
前端·javascript·pdf
Justinc.2 小时前
CSS3新增边框属性(五)
前端·css·css3
neter.asia2 小时前
vue中如何关闭eslint检测?
前端·javascript·vue.js