現在處於 node.js 幼幼班的階段,變覺得 node.js 的發明實在太方便,尤其是自己對 JavaScript 有一定的熟悉度所以學起來很愉悅,今天的 case 是,之前有介紹過 r.js,未來會朝向所有相關的 js 檔案全部壓成一個減少 server request,在開發階段會面臨一個問題就是東西有改動就要 compile,每次都要手動執行也挺累的,今天看到一個套件名為 watch,他可以偵測資料夾內檔案新增、修改、刪除的事件,於是寫了個 script 來幫我監聽並且做 auto compile。
~/watch/project.js
var watch = require('watch'); var path = require('path'); var exec = require('child_process').exec; var monitorPath = '/var/www/project/assets/js/'; watch.createMonitor(monitorPath + 'src/', function(monitor) { monitor.on('changed', function(f) { var baseName = path.basename(f); var body = path.basename(f, '.js'); var ext = path.extname(f); if (ext === '.js') { var command = 'r.js -o ' + monitorPath + 'build.js name=src/' + body + ' out=' + monitorPath + 'build/' + baseName + ' optimize=none'; console.log('start compile ' + baseName); exec(command, function(error, stdout) { console.log(stdout); }); } }); });
我在根目錄下面建立了一個 watch 的目錄,日後有新的專案的話就會多建一個檔案來監控,東西都設定完成後,只要在該目錄下 node project.js
,watch 就會自動啟動了,我這邊編譯先把 uglifying 關掉,因為他會影響編譯速度,如果檔案已經確定是 final 不會變動的話,在去手動執行有 uglifying 的指令,如果在 windows 遇到錯誤訊息,只要把 command
改成 r.js.cmd
就可以了。
沒有留言:
張貼留言