利用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 后缀名判断限制代码
Mar 31 NodeJs
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
初探nodeJS
Jan 24 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 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去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
浅析Python编写函数装饰器
2016/03/18 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python版本五子棋的实现代码
2018/12/11 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
办公室主任职责范文
2013/11/08 职场文书
社区工作者先进事迹
2014/01/18 职场文书
清扬洗发水广告词
2014/03/14 职场文书
幼师求职自荐信
2014/05/31 职场文书
办公室主任个人总结
2015/02/28 职场文书
2015年路政工作总结
2015/05/22 职场文书
责任书格式
2019/04/18 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS