利用nodejs监控文件变化并使用sftp上传到服务器

发布时间 - 2026-01-10 23:08:08    点击率:

最近在用react+express做一个自己的工具型网站(其实就是夺宝岛抢拍器)

然后因为经常要改动,而且又要放到服务器上进行测试。总是要webpack,然后手动把文件上传上去,不胜其烦,索性搜索了下,直接写个能检测文件变化并自动进行上传的脚本好了。

首先,我们使用npm 安装两个别人封装好的模块。

npm install ssh2-sftp-client
npm install gaze

第一个模块的作用是sftp上传文件,

第二个模块的作用就是监听文件变化了。当然,你也可以采用node自带fs模块。

这两个模块的用法在这里:ssh2-sftp-client gaze

安装好了以后,第一步就是监听文件的变化了,由于我的文件已经使用webpack构建好了,所以后面只是文件变化,不会有文件增加,所以这里只需要使用changed就可以了,其他的用法请参考上面的链接,都大同小异

gaze(['你的文件路径/*.*','还可以使用数组的方式监听多个文件夹/app.js'], function(err, watcher) {
 let watched = this.watched();
 //监听文件的变化
 this.on('changed', (filepath) => {
 //romotePath是我文件的远程位置
 let romotePath = '/root' + filepath.substr(15);
 //put为上传文件的函数,下面会讲 
 put(filepath,romotePath);
 console.log(filepath + ' was changed');
 });
}); 

然后就开始写我们的上传文件的函数

function put(localPath,romotePath){
 let sftp = new Client();
 sftp.connect({
 host: '你的服务器地址',
 port: '端口,没改过的话是22',
 username: '连接的用户名',
 password: '密码'
 }).then(() => {
 return sftp.put(localPath,romotePath);
 }).then(() =>{
 console.log("上传完成");
 }).catch((err) => {
 console.log(err, 'catch error');
 });
}

好了,别忘了在我们的文件开始的地方可是要引入模块的。

let Client = require('ssh2-sftp-client');
let gaze = require('gaze');

接下来我们来实验一下。来到我们的文件夹webpack一下

果然可以看到已经修改并且上传完成了。上传需要时间,请耐心等待。

来到我们的服务器,果然最近的修改时间已经变成现在了。

从此以后我终于不用一个个上传了。每次要修改直接。打开一个窗口开启这个脚本,就可以愉快的编码了。

以上所述是小编给大家介绍的利用nodejs监控文件变化并使用sftp上传到服务器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# nodejs  # 服务器监控  # sftp服务器  # node ftp上传文件夹到服务器案例详解  # Node交互式的SFTP上传实现过程剖析  # node.js自动上传ftp的脚本分享  # node.js express框架实现文件上传与下载功能实例详解  # NodeJs实现简易WEB上传下载服务器  # nodejs multer实现文件上传与下载  # nodejs+express实现文件上传下载管理网站  # nodejs连接ftp上传下载实现方法详解【附:踩坑记录】  # 好了  # 上传  # 上传文件  # 小编  # 就可以  # 自己的  # 在这里  # 会有  # 不胜其烦  # 还可以  # 第一个  # 多个  # 在此  # 其他的  # 这两个  # 第二个  # 宝岛  # 给大家  # 又要  # 可以看到 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何快速搭建高效WAP手机网站?  简单实现Android验证码  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  详解Android中Activity的四大启动模式实验简述  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel怎么清理缓存_Laravel optimize clear命令详解  微信h5制作网站有哪些,免费微信H5页面制作工具?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  iOS发送验证码倒计时应用  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  如何在新浪SAE免费搭建个人博客?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  三星、SK海力士获美批准:可向中国出口芯片制造设备  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  千库网官网入口推荐 千库网设计创意平台入口  长沙企业网站制作哪家好,长沙水业集团官方网站?  高防服务器租用如何选择配置与防御等级?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel如何实现用户密码重置功能?(完整流程代码)  如何撰写建站申请书?关键要点有哪些?  如何做网站制作流程,*游戏网站怎么搭建?  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  LinuxShell函数封装方法_脚本复用设计思路【教程】  如何在万网自助建站中设置域名及备案?  Laravel如何使用Eloquent进行子查询  Laravel中的withCount方法怎么高效统计关联模型数量  Java解压缩zip - 解压缩多个文件或文件夹实例  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel如何保护应用免受CSRF攻击?(原理和示例)  魔方云NAT建站如何实现端口转发?  canvas 画布在主流浏览器中的尺寸限制详细介绍  如何在宝塔面板创建新站点?  使用C语言编写圣诞表白程序  Swift开发中switch语句值绑定模式  油猴 教程,油猴搜脚本为什么会网页无法显示?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Angular 表单中正确绑定输入值以确保提交与验证正常工作  西安专业网站制作公司有哪些,陕西省建行官方网站?