巧用Guard提高web開發效率——編譯CSS前處理器和CoffeeScript/自動重新整理瀏覽器等

江小湖Laker發表於2013-12-02

什麼是Guard

Guard是一個開源的 用於處理系統檔案變動的命令列工具,有很多工程師為它寫了擴充外掛和在github上貢獻程式碼,讓它不斷變得強大。
官網
github專案地址

本文目的

現在我們利用它完成一下幾個功能:
1.監聽Sass/Less檔案
2.監聽CoffeeScript檔案
3.連線css/js檔案
4.儲存檔案自動重新整理瀏覽器

本文基於的環境

Ubuntu 12.04 (根據文件看來,除了自動重新整理瀏覽器的實現外,其他系統無影響)

安裝Guard

Guard是用ruby寫的,所以首先要有ruby環境。這裡跳過安裝ruby。
安裝Guard和一個依賴rb-fsevent

$ gem install guard
$ gem install rb-fsevent

安裝所需Guard外掛

各外掛相互獨立,可以根據自己的需要安裝。
1.sass

$ gem install guard-sass

2.less

$ gem install guard-less

3.coffeescript

$ gem install guard-coffeescript

4.連線檔案

$ gem install guard-concat

5.瀏覽器自動重新整理,用到的是livereload瀏覽器外掛。官方沒有linux版,這個是guard利用API做的。window和Mac的直接可以看這裡, 也可以安裝guard-livereload

$ gem install guard-livereload

使用前的工作

cd到開發目錄,初始化Guard。

$ guard init

開啟Guard

$ guard

SASS/Less 和 CoffeeScript

SASS/Less 和 Coffeescript 外掛的用法大同小異,這裡以sass為例。
先修改配置檔案,找到Guardfile檔案,可以看到一些配置定義。這裡為了演示,新增以下配置,意思是監聽“sass”資料夾內容編譯到“css”資料夾:

guard 'sass', :input => 'sass', :output => 'css'
guard 'coffeescript', :input => 'cs', :output => 'js'

儲存重啟guard,才能是修改的配置生效。
現在在根目錄新建“sass”資料夾,隨意寫個sass或者scss檔案,儲存,既可自動編譯到"css"資料夾。同理,在“cs”資料夾裡的coffe檔案會被編譯到“js”裡。
更多參考戳進guard-sass, guard-less, guard-coffeescript

連線檔案

同樣修改配置,新增下面配置,意思是把js資料夾裡的main.js和test.js合併到all.js裡,且main.js在test.js之前(為避免程式碼之間的影響,請使用閉包):

guard :concat, type: "js", files: %w(main test), input_dir: "js", output: "js/all"

CSS檔案也可以做這樣的連線

guard :concat, type: "css", files: %w(main header), input_dir: "css", output: "css/all"

還是要提醒一下,修改配置後儲存,要重新開啟guard

儲存檔案自動重新整理瀏覽器

先安裝chrome外掛
修改配置,留下這段用來測試就可以。表示監聽根目錄下的css/js/html檔案

guard 'livereload' do
  watch(%r{.+\.(css|js|html)})
end

確定開啟Guard和Livereload後,就可以在儲存檔案時自動重新整理頁面,用多螢幕開發的話是特麼滴爽。沒有多螢幕的,可以把編輯器設定為離開時自動儲存,就可以在寫好程式碼後直接切換到瀏覽器,編輯器自動儲存,外加瀏覽器自動重新整理,自動神馬的最有愛了~
此外掛官網

寫在後面

Guard還有很多強大的外掛,有興趣的可以研究一下:更多外掛列表
上面這些功能用Gruntjs也能實現,但是Gruntjs很流行,少有人用Guard,我很不理解。這是我在SegmentFault提的問題關於Gruntjs和Guard的區別,請路過的大神幫忙解惑一下,謝謝~

相關文章