溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用nodejs監(jiān)控文件變化并使用sftp上傳到服務器

發(fā)布時間:2021-07-01 12:06:56 來源:億速云 閱讀:352 作者:小新 欄目:web開發(fā)

這篇文章主要為大家展示了“如何使用nodejs監(jiān)控文件變化并使用sftp上傳到服務器”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用nodejs監(jiān)控文件變化并使用sftp上傳到服務器”這篇文章吧。

最近在用react+express做一個自己的工具型網(wǎng)站(其實就是奪寶島搶拍器)

然后因為經(jīng)常要改動,而且又要放到服務器上進行測試??偸且獁ebpack,然后手動把文件上傳上去,不勝其煩,索性搜索了下,直接寫個能檢測文件變化并自動進行上傳的腳本好了。

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

npm install ssh3-sftp-client
npm install gaze

第一個模塊的作用是sftp上傳文件,

第二個模塊的作用就是監(jiān)聽文件變化了。當然,你也可以采用node自帶fs模塊。

這兩個模塊的用法在這里:ssh3-sftp-client gaze

安裝好了以后,第一步就是監(jiān)聽文件的變化了,由于我的文件已經(jīng)使用webpack構建好了,所以后面只是文件變化,不會有文件增加,所以這里只需要使用changed就可以了,其他的用法請參考上面的鏈接,都大同小異

gaze(['你的文件路徑/*.*','還可以使用數(shù)組的方式監(jiān)聽多個文件夾/app.js'], function(err, watcher) {
 let watched = this.watched();
 //監(jiān)聽文件的變化
 this.on('changed', (filepath) => {
 //romotePath是我文件的遠程位置
 let romotePath = '/root' + filepath.substr(15);
 //put為上傳文件的函數(shù),下面會講 
 put(filepath,romotePath);
 console.log(filepath + ' was changed');
 });
});

然后就開始寫我們的上傳文件的函數(shù)

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('ssh3-sftp-client');
let gaze = require('gaze');

接下來我們來實驗一下。來到我們的文件夾webpack一下

如何使用nodejs監(jiān)控文件變化并使用sftp上傳到服務器

果然可以看到已經(jīng)修改并且上傳完成了。上傳需要時間,請耐心等待。

如何使用nodejs監(jiān)控文件變化并使用sftp上傳到服務器

來到我們的服務器,果然最近的修改時間已經(jīng)變成現(xiàn)在了。

從此以后我終于不用一個個上傳了。每次要修改直接。打開一個窗口開啟這個腳本,就可以愉快的編碼了。

以上是“如何使用nodejs監(jiān)控文件變化并使用sftp上傳到服務器”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI