利用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打包工具整合到鼠标右键的方法
May 11 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
python读写文件操作示例程序
2013/12/02 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Python实现分段线性插值
2018/12/17 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
30年同学聚会感言
2014/01/30 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书