利用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开发微信公众号后台服务实例
Sep 03 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
NodeJS学习笔记之Http模块
Jan 13 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 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编写大型网站问题集
2007/03/06 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
thinkphp缓存技术详解
2014/12/09 PHP
CI框架中$this->load->library()用法分析
2016/05/18 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
javascript中常用编程知识
2013/04/08 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
Django实现跨域请求过程详解
2019/07/25 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
销售自荐信
2013/10/22 职场文书
公务员培训心得体会
2013/12/28 职场文书
2014自荐信的写作技巧
2014/01/28 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
销售总经理岗位职责
2014/03/15 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2016年国陪研修感言
2015/11/18 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android