利用sourcemap來調試sass

最近項目用上了sass,做爲css的預處理器,它可讓咱們用程序化的思惟書寫樣式,極大的簡化了css的開發,實在是前端居家旅行必備的利器。css

咱們都知道,在項目中,樣式的頻繁調試是不可避免的,用上sass雖然說coding代碼量減小,但調試過程着實讓人崩潰。前端

看一段sass代碼:node

嵌套書寫的結構在sass中常常會被用到。web

編譯以後的樣式是這樣的:chrome

在開發工具上咱們看到的是編譯後的文件,而非編譯前的源文件。windows

這個時候就產生一個問題了。在生產環境中,我但願看到的未經編譯文件的調試信息,而非編譯後的,由於這樣會極大的方便開發人員。就像上面的截圖,你能在scss文件下,快速定位到這些代碼的位置嗎?瀏覽器

~~~~~~~~~~~~~~~~~~~~~~~~無力吐槽的分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sass

好在,sass在3.3.0以後版本提供了sourcemap功能。至於什麼是sourcemap,這裏有個連接你們能夠參考下。ruby

http://code.tutsplus.com/tutorials/source-maps-101--net-29173工具

本人本地依賴 Ruby來編譯scss文件,若是你沒安裝Ruby,請自行安裝,相關教程能夠google......

若是你本地沒有安裝Ruby,只要裝有node.js和Grunt,一樣的,它們也能夠用來編譯scss文件.

本地裝有Ruby的同窗得首先肯定sass(3.3.0+)和compass是否已經安裝就緒。

命令行下運行:

gem list

若是沒有安裝這兩個包的同窗請執行:

gem install sass --pre
gem install compass --pre

若是是版本過於陳舊請執行:

gem update sass

~~~~~~~~~~~~~~~~~~~~我是傲嬌的分割線~~~~~~~~~~~~~~~~~~~~~

安裝好sass和compass後,咱們本地創建一個測試用的項目。

目錄結構以下:

sass目錄下有一個li.scss文件,咱們的任務就是把li.scss編譯到css目錄下,同時生成sourcemap文件。

獲取sass的相關用法能夠在命令行下輸入:

sass --help

進入項目根目錄,命令行下輸入:

sass --sourcemap --style compact --watch sass:css

這時sass目錄下的scss文件都處於被監聽的狀態,一旦文件被修改,便會及時編譯到css目錄下,同時生成相應的sourcemap文件。固然,編譯的同時,命令行下的窗口會輸出相應的信息,以便開發者調試。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~美麗不可方物的分割線~~~~~~~~~~~~~~~~~~~

到這一步,咱們已經成功生成了sourcemap文件,惋惜的是,在瀏覽器下查看,咱們仍未看到相對應的scss文件。

這是爲何呢?咱們擁有了souremap文件,卻缺乏了相應的解析工具。

Chrome是支持sourcemap的,但要使用該功能,咱們得首先開啓它。

開啓的步驟很簡單,我就不過多描述了,你們看下面的截圖就行了。哦,還有,推薦你們把chrome的版本升到33+,由於我不確保較低版本的chrome可否支持sourcemap。

「F12」,調出開發者工具,點擊以下圖標:

在彈出的面板裏,選擇:

重啓你的chrome。

回到頁面下,這個時候你就能夠看到sourcemap起做用了。

這個時候,若你想修改scss文件,根據行號即可以快速定位,很是方便。

~~~~~~~~~~~~~~~~~~我是寂寞的分割線~~~~~~~~~~~~~~~~~

這裏延伸一下。

許多同窗都喜歡用webstrome來編寫代碼,其實咱們利用其的File Watchers功能很方便就能編譯scss文件。

‘Ctrl+Alt+S’調出setting面板,搜索「file watchers」。

點擊「添加」按鈕

彈出以下面板:

這裏咱們重點填寫下面兩項:

Program:xxxxx     這裏填入你ruby安裝目錄下的scss.bat文件(windows系統下)

Arguments:xxx     這裏輸入的是編譯時的一些參數,我這裏輸入的是:

--no-cache --sourcemap --style compact $FileName$:$FileParentDir$\css\$FileNameWithoutExtension$.css

配置完這些選項,當咱們修改*.scss文件,文件就會自動編譯,特別方便。

~~~~~~~~~~~~~~~~~~~~~~~~~~~寫在最後的分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~

最後,謝謝你們。

相關文章
相關標籤/搜索