[Sass & Compass] Compass: config.rb を詳しくみる

設定ファイルとオプション。
コンパイル時に実行するタスクを設定する。

例えば、下記のように /theme ディレクトリ内で開発したい。

.
├── .sass-cache
├── config.rb
├── sass
│   ├── ie.scss
│   ├── print.scss
│   ├── screen.scss
│   └── style.scss
└── theme
    ├── images
    ├── index.html
    └── stylesheets
        ├── ie.css
        ├── print.css
        ├── screen.css
        └── style.css

config.rb

# Require any additional compass plugins here.
# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "theme/stylesheets"
sass_dir = "sass"
images_dir = "theme/images"
javascripts_dir = "theme/javascripts"
# You can select your preferred output style here (can be overridden via the command line):
# output_style = :expanded or :nested or :compact or :compressed
# To enable relative paths to assets via compass helper functions. Uncomment:
# relative_assets = true
# To disable debugging comments that display the original location of your selectors. Uncomment:
# line_comments = false
# If you prefer the indented syntax, you might want to regenerate this
# project again passing --syntax sass, or you can uncomment this:
# preferred_syntax = :sass
# and then run:
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass

additional_import_paths

複数のプロジェクトで共有するようなmixin等を読み込む場合に利用する。

開発(development)/公開(production)で設定を切り替える

コメントや圧縮オプションも、ruby でうまい事書けるんですね。

Inspecting Configuration Settings passed via the Command Line

こちらが詳しいです。

CSS 圧縮

本番用では CSS を圧縮する。

output_style = (environment == :production) ? :compressed : :expanded

コメント削除

本番用ではdebug用のコメントを付けない。

line_comments = (environment == :production) ? :false : :true

但し、コピーライトなど一部のコメントを残したい場合。
例えば、WordPress テーマに必須のブロックコメントは残したい。

先頭に ! を付ける。

/*!
Theme Name: Your Theme
etc...
*/

環境を指定してコンパイルする

本番(納品)ファイルのコンパイルは、明示的に行うと便利。

% compass compile -e production --force

コンパイル時にスクリプトを実行させる

コールバックを利用して、コンパイル時にスクリプトを実行させることができます。

例えば、WordPress テーマの開発時に style.css を適正なディレクトリに移動します。

CSSが生成されたとき、style.cssのみトップディレクトリ(ひとつ上の階層)に移動させる必要があります。
config.rb に下記を追記します。

require 'fileutils'
on_stylesheet_saved do |file|
  if File.exists?(file) && File.basename(file) == "style.css"
    puts "Moving: #{file}"
    FileUtils.mv(file, File.dirname(file) + "/../" + File.basename(file))
  end
end

.scss を更新してコンパイルを実行します。

% compass w
>>> Change detected at 15:09:18 to: style.scss
identical theme/stylesheets/ie.css
identical theme/stylesheets/print.css
identical theme/stylesheets/screen.css
   create theme/stylesheets/style.css
Moving: /Users/****/projects/lab_css/theme/stylesheets/style.css
>>> Compass is polling for changes. Press Ctrl-C to Stop.
.
├── .sass-cache
├── config.rb
├── sass
│   ├── ie.scss
│   ├── print.scss
│   ├── screen.scss
│   └── style.scss
└── theme
    ├── images
    ├── index.html
    ├── style.css
    └── stylesheets
        ├── ie.css
        ├── print.css
        └── screen.css