利用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实例解析(输出hello world)
Jan 03 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 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学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
PHP数组实例详解
2016/06/26 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
python实现的登录和操作开心网脚本分享
2014/07/09 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
对python中的logger模块全面讲解
2018/04/28 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
制药工程专业应届生求职信
2013/09/24 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
校运会入场式解说词
2014/02/10 职场文书
项目合作意向书模板
2014/07/29 职场文书
2014年评职称工作总结
2014/11/20 职场文书
中国合伙人观后感
2015/06/02 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
2015年支教教师工作总结
2015/07/22 职场文书