grunt-contrib-compassでsourcemapを吐き出したい時の設定(暫定版)

grunt-contrib-compassでsourcemapを吐き出したい時の設定(暫定版)

2013-12-08

sassのsouremapはsassの3.3からの新機能なので3.3(ただいまRC版)を入れる。
と、よくわからないがcompass-sourcemapsのpreview版も必要っぽいのでそれも入れる。

sassとcompass-sourcemapsのpreview版は以下のコマンドでインストールする。

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

で、config.rbに以下を追記。

sass_options = { :sourcemap => true }

これでgrunt watchなどでsass+compassビルドをすると以下のようなエラーが出る。

NoMethodError on line ["147"] of /usr/local/Cellar/ruby/1.9.2-p290/lib/ruby/gems/1.9.1/gems/compass-sourcemaps-0.12.4.sourcemaps.a4836f1/lib/compass/compiler.rb: undefined method `__duration' for #<String:0x007f9deba50218>

これはgrunt-contrib-compassの問題らしく、【2013年12月8日時点】では暫定的な解決方法しか提示されていない。
暫定ではあるがgrunt-contrib-compassのフォルダ内のtasks/compass.jsの45〜49行目にある以下のコードを削除すればとりあえず動く。

    // display compilation time
    if (!options.clean) {
      options.time = true;
    }

参考URL

http://memolog.org/2013/08/generate_sass_sourcemap_with_compass.html
https://github.com/gruntjs/grunt-contrib-compass/issues/23