Linux Bash 監控檔案修改 執行即時合併

JavaScript 常常會需要修改後,執行壓縮等動作,常見的會是用 grunt 做類似下述命令:

不過要做檔案合併、檢查、壓縮..  等等,應該不用這麼費工,Shell 就可以做到,於是簡單的寫了一套。

註:整個程式只有兩個檔案,全部內容只有5行,相信修改應該沒有難度。(程式語言:Linux 的 Bash Shell)

Linux Bash 監控檔案修改 執行即時合併

JavaScript 檢查程式、壓縮程式這些有各自喜好,請自行修改 Script 去達成即可。

此程式內含的只有做最簡單的檔案合併,可以自行靠 pipe 加上 jshine、uglify..  等等。

  • 完整程式於此處:tsung/watch-bash
  • 此程式的功用在於開啟即時監控此目錄下的所有檔案,有任何修改,立刻做檔案合併的動作。

程式使用說明

  • 執行:./watch_linux.sh
  • 停止:Ctrl + c

程式修改說明

  • 說明此程式用到的指令:
    • watch:每秒執行一次,循序不斷地執行
    • find:找出每秒更新的檔案
    • cat:合併內容
    • 想要對檔案、目錄做任何監控、排除等動作(watch_linux.sh),都使用 find 的命令達成 (iname、! -path .. 等等)。
    • 想要對檔案做合併、壓縮等動作,修改 concat.sh,加入即可。

測試環境與操作

  1. cd /tmp
  2. git clone https://github.com/tsung/watch-bash
  3. cd watch-bash/example/ # 將 util.js 裡面的 Library 檔案合併在前面,將合併後的內容放於 dist/
  4. vim util.js # 隨意寫寫
  5. vim test.js # 隨意寫寫
  6. ./watch_linux.sh # 開啟 watch.sh
  7. vim test.js # 修改內容,註:修改 util.js 請不要開啟 watch.sh,或者 watch_linux.sh 需要增加排除 util.js 的檔案檢查(find)
  8. 於 dist/ 自動產生 test.min.js 的檔案,是將 util.js + test.js 合併起來的

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Linux Bash 監控檔案修改 執行即時合併〉中有 5 則留言

  1. 用 inotifywait 可能比較有效率? kernel 直接跟你說哪個檔案有變動也省去那 1 秒的延遲. 不過, 如果真的是中大型的專案可能用 gulp/grunt 還是比較方便啦.

    1. inotifywait 要另外安裝就沒有測試,看起來應該可以直接取代 find 這件事情。

      另外想請問的是,gulp 和 grunt 方便在哪邊呢?

    2. 在有多組資源需要編譯的時候.. html/css/js 甚至單項資源可能有多個路徑用不同的設定, 或是要經過多次 compile 的時候, 用 bash 寫就顯的

  2. *顯的煩亂.. 當然是一定寫的出來啦, 只是維護上我個人認為用 grunt/gulp 比較方便.

    只有一兩個目錄或只有簡單的動作像 coffee->js, jslint 之類的動作要執行的時候那 bash 就會比較適合.

    1. 喔喔,我是覺得 shell script 靠 | 還蠻清楚的。

      當然用 grunt / gulp 有他的方便性,只是目前我還沒找到適合的地方就是了

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料