利用nodejs監(jiān)控文件變化并使用sftp上傳到服務(wù)器
最近在用react+express做一個(gè)自己的工具型網(wǎng)站(其實(shí)就是奪寶島搶拍器)
然后因?yàn)榻?jīng)常要改動(dòng),而且又要放到服務(wù)器上進(jìn)行測(cè)試??偸且獁ebpack,然后手動(dòng)把文件上傳上去,不勝其煩,索性搜索了下,直接寫(xiě)個(gè)能檢測(cè)文件變化并自動(dòng)進(jìn)行上傳的腳本好了。
首先,我們使用npm 安裝兩個(gè)別人封裝好的模塊。
npm install ssh2-sftp-client npm install gaze
第一個(gè)模塊的作用是sftp上傳文件,
第二個(gè)模塊的作用就是監(jiān)聽(tīng)文件變化了。當(dāng)然,你也可以采用node自帶fs模塊。
這兩個(gè)模塊的用法在這里:ssh2-sftp-client gaze
安裝好了以后,第一步就是監(jiān)聽(tīng)文件的變化了,由于我的文件已經(jīng)使用webpack構(gòu)建好了,所以后面只是文件變化,不會(huì)有文件增加,所以這里只需要使用changed就可以了,其他的用法請(qǐng)參考上面的鏈接,都大同小異
gaze(['你的文件路徑/*.*','還可以使用數(shù)組的方式監(jiān)聽(tīng)多個(gè)文件夾/app.js'], function(err, watcher) { let watched = this.watched(); //監(jiān)聽(tīng)文件的變化 this.on('changed', (filepath) => { //romotePath是我文件的遠(yuǎn)程位置 let romotePath = '/root' + filepath.substr(15); //put為上傳文件的函數(shù),下面會(huì)講 put(filepath,romotePath); console.log(filepath + ' was changed'); }); });
然后就開(kāi)始寫(xiě)我們的上傳文件的函數(shù)
function put(localPath,romotePath){ let sftp = new Client(); sftp.connect({ host: '你的服務(wù)器地址', port: '端口,沒(méi)改過(guò)的話(huà)是22', username: '連接的用戶(hù)名', password: '密碼' }).then(() => { return sftp.put(localPath,romotePath); }).then(() =>{ console.log("上傳完成"); }).catch((err) => { console.log(err, 'catch error'); }); }
好了,別忘了在我們的文件開(kāi)始的地方可是要引入模塊的。
let Client = require('ssh2-sftp-client'); let gaze = require('gaze');
接下來(lái)我們來(lái)實(shí)驗(yàn)一下。來(lái)到我們的文件夾webpack一下
果然可以看到已經(jīng)修改并且上傳完成了。上傳需要時(shí)間,請(qǐng)耐心等待。
來(lái)到我們的服務(wù)器,果然最近的修改時(shí)間已經(jīng)變成現(xiàn)在了。
從此以后我終于不用一個(gè)個(gè)上傳了。每次要修改直接。打開(kāi)一個(gè)窗口開(kāi)啟這個(gè)腳本,就可以愉快的編碼了。
以上所述是小編給大家介紹的利用nodejs監(jiān)控文件變化并使用sftp上傳到服務(wù)器,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Node.js刷新session過(guò)期時(shí)間的實(shí)現(xiàn)方法推薦
下面小編就為大家?guī)?lái)一篇Node.js刷新session過(guò)期時(shí)間的實(shí)現(xiàn)方法推薦。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05NodeJs版本過(guò)高無(wú)法啟動(dòng)Vue項(xiàng)目報(bào)錯(cuò)的幾種解決方法
在開(kāi)發(fā)vue項(xiàng)目時(shí),我們通常使用nodejs作為項(xiàng)目的運(yùn)行環(huán)境,但是有時(shí)候,由于nodejs版本過(guò)高,可能會(huì)導(dǎo)致vue項(xiàng)目啟動(dòng)報(bào)錯(cuò),這篇文章主要給大家介紹了關(guān)于NodeJs版本過(guò)高無(wú)法啟動(dòng)Vue項(xiàng)目報(bào)錯(cuò)的幾種解決方法,需要的朋友可以參考下2023-12-12IDEA中配置運(yùn)行node.js的完整過(guò)程
為了使在終端使用npm,我們可以配置環(huán)境變量,這篇文章主要給大家介紹了關(guān)于IDEA中配置運(yùn)行node.js的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10nodejs 使用http進(jìn)行post或get請(qǐng)求的實(shí)例(攜帶cookie)
今天小編就為大家分享一篇nodejs 使用http進(jìn)行post或get請(qǐng)求的實(shí)例(攜帶cookie),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能示例
這篇文章主要介紹了nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能,結(jié)合實(shí)例形式分析了nodejs連接及查詢(xún)mysql數(shù)據(jù)的相關(guān)操作步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01