利用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 相关文章推荐
使用forever管理nodejs应用教程
Jun 03 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 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脚本数据库功能详解(上)
2006/10/09 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
php微信开发之关注事件
2018/06/14 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
jquery 插件开发备注
2010/08/27 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
Python判断直线和矩形是否相交的方法
2015/07/14 Python
python编码最佳实践之总结
2016/02/14 Python
Python聊天室程序(基础版)
2018/04/01 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
消防安全员岗位职责
2014/03/10 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
活动总结报告格式
2014/05/09 职场文书
商铺租房协议书范本
2014/12/04 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
Go语言测试库testify使用学习
2022/07/23 Golang