OctopressではデフォルトでCompass を使ってSassをCSSに変換していますが、 デフォルト設定では出来上がったスタイルシートは最小化されていて 見てももはや良くわかりません。
これはCompassのオプションを変えてあげれば変更することが出来るので、 見やすい出力用のタスクをRakefileに加えました。
Compassのオプション
Compassでは
compass compile
でScssを一纏めにしてCSSに変換してくれるのですが、この時、
-s
/--output-style
オプションを使ってその出力形式を変更できます。
Octopressでは、これがconfig.rb
の中で
output_style = :compressed
と指定されています1。
使える値はnested
、expanded
、compact
、compressed
の4つ。
下みたいなScssインプットを入れると
1 2 3 4 5 6 |
|
nested
はScssみたいなネストっぽくインデントを無理やり入れて表示。 (ただし、括弧は実際にはネストされて無くて全て独立。)
1 2 3 4 |
|
- expandedは一番素直にCSSを書いた感じ。
1 2 3 4 5 6 |
|
- compactはexpandedから括弧分などを1行にまとめたりしてコンパクトに。
1 2 |
|
- compressedは余計な空白や改行は全て取り払い最小化。
1
|
|
といった感じです。
Scssで書いた結果、まとめた感じがどうなってるか見るには
nested
がいい感じです。
ちなみに、現在使ってるscreen.css
のサイズを比べてみるとこんな感じでした。
option | size (kB) |
---|---|
Sass | 204 |
nested | 68 |
expanded | 68 |
compact | 64 |
compress | 56 |
compress
でexpanded
とかの20%近く減らせてる感じです。
元のSassファイルは合計で4倍くらいありました。
nested用タスク
下で作ったタスクの応用:
Octopress Tips: stylesheetsだけアップデートする
こんな感じ。
1 2 3 4 5 6 |
|
css_nested
と言う新しいタスクを作ってcompass
のコマンド部分に-s nested
を加えただけです。
上のリンクにある元のrake css
の方では最後にスタイルシートを
publicディレクトリにコピーしてますが、ここではファイルを見てチェックする用なので
sourceディレクトリに作るだけにしてあります。
これで、ちょっと気になった時に
$ rake css_nested
$ vim source/stylesheets/screen.css
で簡単にスタイルがチェックできるようになりました。
-
output_style
以外にもsass_dir = "sass"
: 入力元(<sass_dir>/screen.scss
がトップファイルになるcss_dir = "public/stylesheets"
: 出力先(<css_dir>/screen.css
が出力ファイルになる。- ただし、Octopressのタスクでは通常
--css-dir
で直接source/stylesheets
を指定して、一旦そこへ出力してからpublic
へコピー、と言うことをしている。
- ただし、Octopressのタスクでは通常
line-comments = false
: Css作成時に元ファイルの情報のコメントを書くかどうか(どのファイルのどの辺か、など。compressed
では何れにしろ無効。)。
等、いくつか設定されています(直接CSS出力に関わるのは上記のオプション)。 ↩