利用nodejs监控文件变化并使用sftp上传到服务器

摘要:
Npminstallssh2 sftp clientnpminstallgaze第一个模块用于通过sftp上载文件,第二个模块用于侦听文件更改。这两个模块的用法如下:安装ssh2-sftp-clientgate后,第一步是监听文件中的更改。由于我的文件是使用webpacks构建的,因此只会进行文件更改,不会添加任何文件。因此,您只需要在此处使用changed。有关其他用法,请参阅上面的链接,并且都是相同的;然后开始编写上传文件函数put{letsftp=newClient();sftp.connect.Then.catch;}的函数好吧,别忘了在文件开头介绍模块。letClient=要求;letazze=要求;接下来,让我们进行实验。

很久没写博客了,因为最近在用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上传到服务器第1张

果然可以看到已经修改并且上传完成了。上传需要时间,请耐心等待。

利用nodejs监控文件变化并使用sftp上传到服务器第2张

来到我们的服务器,果然最近的修改时间已经变成现在了。

利用nodejs监控文件变化并使用sftp上传到服务器第3张

从此以后我终于不用一个个上传了。每次要修改直接。打开一个窗口开启这个脚本,就可以愉快的编码了。

免责声明:文章转载自《利用nodejs监控文件变化并使用sftp上传到服务器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇AWS系列-Amazon Simple Notification Service (SNS)Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ubuntu 14.04 FTP服务器--vsftpd的安装和配置

Ubuntu 14.04 FTP服务器--vsftpd的安装和配置 我们经常需要将本地的文件上传到远程的Ubuntu 14.04服务器上,或者把远程Ubuntu 14.04服务器上的文件下载到本地,这就需要用到vsftpd来搭建FTP服务,现在介绍一下如何在Ubuntu 14.04上安装和配置vsftpd 工具/原料 Ubuntu 14.04 WinSC...

postgresql-slony-I同步复制配置步骤

主数据库: 172.16.254.21 端口:5432 从数据库: 172.16.254.22 端口:5432 步骤1:主从均安装slon apt-get install slon-bin 步骤2:主从数据库配置权限,创建语言。 在主数据库中   vi /etc/postgresql/8.3/node/pg_hba.conf 添加一条记录    host ...

webpack 多应用项目搭建

前言: 多应用在实际的项目中使用场景也是比较多的,话不多说,直接进入搭建过程 项目搭建: 请参考之前的webpack项目搭建笔记,此处不再过度讲解,项目结构如下 app1.html 1 <!DOCTYPE html> 2 <html style="font-size:20px"> 3 <head> 4 <...

xml根据属性去重。如csprj去重

public static void distinct(string filePath) { //1、创建XML文档对象 XmlDocument doc = new XmlDocument(); //2、加载指定路径的XML do...

git--指定不上传的文件夹

在使用 vue-cli 脚手架的时候,有一个依赖模板文件夹是不希望被上传到git上的,因为里面文件太多了。 解决办法:手动创建git忽略push清单,node_module以及自身 1.文件夹内右键git bash,输 touch .gitignore,注意中间有空格。  2.编辑器打开生成的 .gitignore 文件,加入: node_modules...

PHP文件上传至另一台服务器

PHP程序上传文件时,想指定上传到另一台服务器。 move_uploaded_file这个方法第二个参数指定的存放路径需要和php程序文件一个服务器,没办法指定其他服务器的地址,本人才疏学浅,哪位大哥会的还请赐教下。 既然不能这样实现,肯定有其他办法的,想着ftp也可以实现文件传输的哇,继而朝ftp方向入手。 首先,在自己台式机和笔记本上都开通了ftp,这...