利用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服务器(4):路由
Dec 18 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 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
Terran历史背景
2020/03/14 星际争霸
php和javascript之间变量的传递实现代码
2012/12/19 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
php实现等比例压缩图片
2018/07/26 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
简单了解python PEP的一些知识
2019/07/13 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python mock测试的示例
2020/10/19 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
致100米运动员广播稿
2014/02/14 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
通用员工手册范本
2015/05/14 职场文书
初中语文教师研修日志
2015/11/13 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
vue使用element-ui按需引入
2022/05/20 Vue.js
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android