利用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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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
Email+URL的判断和自动转换函数
2006/10/09 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
php写的AES加密解密类分享
2014/06/20 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
浅谈React高阶组件
2018/03/28 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
python 阶乘累加和的实例
2019/02/01 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python timeit模块原理及使用方法
2020/10/10 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
法律工作求职自荐信
2013/10/31 职场文书
护士进修自我鉴定
2014/02/07 职场文书
刑事上诉状范文
2015/05/22 职场文书
python blinker 信号库
2022/05/04 Python
oracle数据库去除重复数据
2022/05/20 Oracle