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


Posted in NodeJs onFebruary 18, 2017

最近在用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上传到服务器

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

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

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

NodeJs 相关文章推荐
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
详解nodejs中exports和module.exports的区别
Feb 17 #NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 #NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 #NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 #NodeJs
Nodejs实现短信验证码功能
Feb 09 #NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 #NodeJs
使用nodejs下载风景壁纸
Feb 05 #NodeJs
You might like
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
Prototype Array对象 学习
2009/07/19 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
python实现词法分析器
2019/01/31 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
为什么相对PHP黑python的更少
2020/06/21 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
大四学年自我鉴定
2013/11/13 职场文书
播音主持女孩的自我评价分享
2013/11/20 职场文书
应用数学自荐书范文
2013/11/24 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
教师求职自荐信
2015/03/26 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
交通事故起诉书
2015/05/19 职场文书
信用卡收入证明范本
2015/06/12 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP