April 22, 2017

在 Sublime Text 3 將 Sass 編譯成 CSS

在 動畫互動網頁程式入門(HTML/CSS/JS)上,吳哲宇老師使用 Sass 當作 CSS 的預處理器,可以設定變數、利於 Nesting、引入 Mixins 等等優點,比起純 CSS 還要方便好用。剛好 Frontend Intermediate Course 中的第三週作業就是要用預處理器寫 CSS,於是想要在 Sublime 上面設定 Sass,並將 Sass 編譯成 CSS。

在 Sublime 上面把 Sass 編譯成 CSS 比我想像還要麻煩,本來以為只要在 Sublime 上面安裝 Sass 套件就可以了,結果根本不是這樣子(我太天真的啊...)

Google 搜尋之後發現還需要安裝 SASS Build 套件才可以將 Sass 編譯成 CSS。當我以為這樣就完成安裝設定後才發現,不是只在 Sublime 上面安裝那兩個套件,還要在電腦安裝 Ruby 跟 Sass 才可以,我果然是太天真了...

於是就努力的研究一下到底要怎麼安裝設定才可以,以下是我自己的設定過程,如果需要比較詳細的教學,我在 YouTube 上面發現 Peter Sommerhoff 教學影片還不錯 Sass Beginner Tutorial,可惜是在我差不多都設定完成之後才看到。


我的作業系統是 Windows,所以以下安裝設定過程只適合 Windows。

1. 先在 Sublime 上利用 Package Control 安裝 Sass 、 SASS Build 跟 SublimeOnSaveBuild,當然前提是你有先安裝 Sublime 的 Package Control,需要 Package Control 安裝教學可以參考保哥的文章:Sublime Text 3 新手上路

2. Sass 依賴 Ruby 環境,所以要先安裝 Ruby,到官網下載 Ruby Downloads,我不確定應該安裝哪個版本,因為我的筆電是 64-bit,所以就選了最新版本的 64-bit 安裝。這邊要注意安裝時要將第二個選項打勾:


3. 安裝 Sass。先開啟 Start Command Prompt with Ruby

然後輸入:
gem install sass

如果要檢查是否安裝成功可以輸入:
sass -v

如果有出現 Sass 版本那就表示已安裝成功。


4. 將 Sass 編譯成 CSS。到目前為止,環境配置都已經完成。在 Tools -> Build System -> SASS。

然後開啟 Sass 檔案,按下 Ctrl + B 就會將檔案編譯成 CSS,可是編譯出的 CSS 檔案會跟 Sass 檔案在同一個資料夾中。


5. 如果想要把 CSS 檔案自動編譯到另一個 CSS 資料夾中,要進一步設定。在到 Sublime 裡,選 Tools -> Build System -> New Build System。

將下面的程式碼貼上:
{

 "cmd": ["sass", "--update", "$file:${file_path}/../css/${file_base_name}.css", "--stop-on-error", "--no-cache"],
 "selector": "source.sass, source.scss",
 "line_regex": "Line ([0-9]+):",

 "osx":
 {
  "path": "/usr/local/bin:$PATH"
 },

 "windows":
 {
  "shell": "true"
 }

}


另存新檔到下面路徑內:
C:\ Users\***\AppData\Roaming\Sublime Text 3\Packages\User


檔名可以隨你喜好(只要是英文檔名),但是附檔名一定要是 .sublime-build
重開 Sublime 後,然後在 Tools -> Build System -> (剛才你創的檔名,我的是 Build to CSS Directory)。

在你工作的檔案夾內創一個 CSS 檔案夾,然後在 Sublime 開啟 Sass 檔案,按 Ctrl + B,就會發現 CSS 檔案會直接編譯到 CSS 檔案夾內。

6. 這樣就成功在 Sublime 上將 Sass 檔編譯成 CSS 了,不過在編譯的過程,如果你的 Sass 檔案有中文字,要加上 @chartset "UTF-8",否則會出現編譯失敗的訊息。

7. 因為有安裝 SublimeOnSaveBuild 套件,所以每次 Sass 存檔時就會自動編譯更新 CSS 檔,如果沒有,那就要手動按 Ctrl + B 才會編譯更新。
不過 SublimeOnSaveBuild 會編譯 Sass 子文件(partials),所以還要另外設定,在 Preferences -> Package Settings -> SublimeOnSaveBuild -> Settings - User,然後貼上這一段程式碼:
{
    "filename_filter": "(/|\\\\|^)(?!_)(\\w+)\\.(css|js|sass|less|scss)$",
    "build_on_save": 1
}

之後記得存檔,這樣 SublimeOnSaveBuild 就不會編譯 Sass 子文件的 CSS 檔案。
不過要記得在主要的 Sass 檔案中 @import "子文件檔名",不然會出現編譯錯誤的訊息。


大概就是這樣子,對於熟悉電腦的人可能是非常簡單的事情,但對於我來說,有點複雜,希望可以幫到有同樣需求的人。


參考文章:
Sublime Text 配置 Sass
Get Sass Working in Sublime Text for Windows in 8 Steps         


11 comments:

  1. 最近也是從codepen轉到用sublime!
    太感謝你的分享了:DD

    ReplyDelete
    Replies
    1. 感謝你的留言!抱歉現在才看到,是我的第一個留言,太令人感動了 QAQ

      Delete
  2. 不知能不能請教您問題

    請問這步驟:

    然後開啟 Sass 檔案,按下 Ctrl + B 就會將檔案編譯成 CSS,
    可是編譯出的 CSS 檔案會跟 Sass 檔案在同一個資料夾中

    照您的程式碼打,我都沒出現你的情況,反而一直出現

    WARNING on line 5 of D:\01_european\css\test.sass:
    This selector doesn't have any properties and will not be rendered.
    WARNING on line 9 of D:\01_european\css\test.sass:
    This selector doesn't have any properties and will not be rendered.
    WARNING on line 10 of D:\01_european\css\test.sass:
    This selector doesn't have any properties and will not be rendered.
    Error: Invalid CSS after "backgroound-color:": expected pseudoclass or pseudoelement, was "#fff"
    on line 5 of D:\01_european\css\test.sass
    Use --trace for backtrace.
    [Finished in 0.3s]

    不知您可否有解決方案呢?因為該裝的都裝了…應該吧?

    謝謝

    ReplyDelete
    Replies
    1. 錯誤訊息看起來是你的 Sass 檔案中,1) 第五、九、十行的 selector 後面沒有完成(應該是冒號後面沒加東西),2) background-color: 後面加的東西是錯誤的,3)第五行使用了 --trace
      這些錯誤訊息都解決之後應該就可以成功編譯了

      Delete
  3. 請問有辦法在.sass的檔案中 自動提示css的屬性嗎?

    ReplyDelete
    Replies
    1. 應該是要安裝其他的套件才有提示 CSS 屬性的功能,這篇裡提到的套件只有把 Sass 編譯成 CSS 的功能而已。或是可以安裝 Emmet,可以記一些常用的 CSS 屬性縮寫,像是輸入 ff + tab 就等於 font-family,可以減少一些打字的時間

      Delete
  4. 請問
    每次儲存時都會出現這段
    'sass' ���O�����Υ~���R�O�B�i���檺�{���Χ妸�ɡC
    [Finished in 0.1s with exit code 1]
    [cmd: ['sass', '--update', 'C:\\Users\\Administrator.SIN-20151015MVZ\\Desktop\\Demo\\MyProject\\新增資料夾\\test.scss:C:\\Users\\Administrator.SIN-20151015MVZ\\Desktop\\Demo\\MyProject\\新增資料夾/test.css', '--stop-on-error', '--no-cache']]
    [dir: C:\Users\Administrator.SIN-20151015MVZ\Desktop\Demo\MyProject\新增資料夾]
    [path: C:\Ruby25-x64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Skype\Phone\]'sass' ���O�����Υ~���R�O�B�i���檺�{���Χ妸�ɡC
    [Finished in 0.1s with exit code 1]
    [cmd: ['sass', '--update', 'C:\\Users\\Administrator.SIN-20151015MVZ\\Desktop\\Demo\\MyProject\\新增資料夾\\test.scss:C:\\Users\\Administrator.SIN-20151015MVZ\\Desktop\\Demo\\MyProject\\新增資料夾/test.css', '--stop-on-error', '--no-cache']]
    [dir: C:\Users\Administrator.SIN-20151015MVZ\Desktop\Demo\MyProject\新增資料夾]
    [path: C:\Ruby25-x64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Skype\Phone\]
    該如何解決 已經照上面安裝了QQ

    ReplyDelete
    Replies
    1. 不知道你的問題解決了沒?!
      我有發現跟你一樣的狀況~
      本來安裝的是Ruby x64的版本,後來改裝 x86的就好了~
      或許你可以試試~~

      Delete
    2. 路人經過,先謝謝Peggy這篇文章,給我的幫助很大!上面Wei遇到的問題我也遇過,我原先也參照shang的方法改裝x86,後來是重新安裝sublime才成功解決的!

      Delete