利用nodejs監控檔案變化並使用sftp上傳到伺服器

來源:互聯網
上載者:User

標籤:put   伺服器   blog   pat   第一個   console   user   cli   開啟   

很久沒寫部落格了,因為最近在用react+express做一個自己的工具型網站(其實就是奪寶島搶拍器)

然後因為經常要改動,而且又要放到伺服器上進行測試。總是要webpack,然後手動把檔案上傳上去,不勝其煩,索性搜尋了下,直接寫個能檢測檔案變化並自動進行上傳的指令碼好了。

首先,我們使用npm 安裝兩個別人封裝好的模組。

npm install ssh2-sftp-clientnpm 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上傳到伺服器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.