先日Twitter上で知ったリソース「Developing with Sass and Chrome Developer Tools」を読ませてもらったところ(というより流し見た感じ)、Sass 3.3.0ではSourcemapを出力する機能があることを知りました。これが上手く利用できれば、CSSファイルを汚さずSassファイル名と行数を知ることができそうです。そこで早速Sass 3.3.0をインストールして試してみました。
普段は下記でつぶやいたサイトを参考に、Sassの--debug-infoフラグをオンにしてデバッグ情報を出力するようにしていますが、この場合各セレクタの上に都度デバッグ情報が出力されるので、公開ディレクトリにアップする際は再度コンパイルしてデバッグ情報を出力しないCSSを生成しなければならず、手間だなと最近思っていました(gruntのタスクを走らせるだけですが)。これが解決できたら嬉しいなと期待をした次第です。
Google Chrome Canaryでできました / Using Sass source maps in WebKit Inspector bit.ly/RjUDqv #chromejp
— Hideki Abeさん (@_hideki_a) 2012年10月24日
Google Chrome CanaryでSassファイル上の行数が表示された
Google Chrome(25.0.1364.172)だとCSSファイル上の行数が表示されたので「まだダメなのか...」と思ったのですが、Google Chrome Canary Build(27.0.1452.0 canary)だとSassファイル名と行数が見事表示されました。
コンパイルは、次のように--sourcemap
オプションを付加するだけです。
$ sass --sourcemap --watch htdocs/_scss/base.scss:htdocs/common/css/base.css
コマンドラインには、CSSファイルと共にソースマップファイルが生成されたことが表示されます。
CSSファイルは、最終行にソースマップファイルへのパスがコメントで記述されていました。デバッグ情報の出力に比べると、圧倒的に綺麗かと思います。
.hdg-l1-01 { color: #c00; } /*@ sourceMappingURL=base.css.map */
Sass 3.3.0のインストール方法
Sass 3.3.0は下記コマンドでインストール可能です。まだ正式版ではないのでご注意下さい。
$ gem install sass --pre
Google Chromeの設定方法
デバッグ情報を利用するパターンと同一ですが、初めての方もいらっしゃるかもしれないので簡単に記しておきます。
- アドレスバーにchrome://flags/を入力し、試験運用機能の設定画面を開きます。
- 下の方に「デベロッパー ツールのテストを有効にする」があるので、「有効にする」をクリックします。
- Chromeを再起動します。
- Developer Toolsを開き、右下のSettingsボタン(ギアのアイコン)をクリックします。そして、Sources内のEnable source mapsにチェックを入れます。
- 続けてExperimentsの中のSupport for Sassにチェックを入れます。
- Chromeを再起動します。
Compassでは...?
sass_options = { :sourcemap => true }
と書けば上手くいきそうですが、ソースマップファイルが出力されません。compass compileのオプションにsourcemapが無いからでしょうか。Sourcemap support · Issue #1108 · chriseppstein/compassで議論されているようなので、今後に期待したいと思います(私は最近Compassのmixinはほとんど利用していない気がするのでこれを待たずに...?)。
2013年3月27日追記
私のようにHelpers...例えばinline-image()だけの利用であれば、次のように--compassオプションを付けたコマンドを実行することで、ソースマップファイルを出力しつつCompassのヘルパーも利用するといったことができました。
$ sass --sourcemap --compass --watch htdocs/_scss:htdocs/common/css
おわりに
やはりGoogle ChromeのDeveloper Toolsは強力ですね。普段はFirefox+FireSassで見ているのですが、やはりChromeに移行しようかと思案し始めました。Firefoxもバージョン22で開発ツールが結構良い感じになっていますが、ソースマップ対応はまだでしょうか。期待しています。