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

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

.
├── .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
こちらが詳しいです。
* Compassで本番用と開発用で設定を振り分けてみる。 | howtohp
* 開発用CSSと納品用CSSで画像の読み込み先を変更する 開発用と本番用で色々変えてみる

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

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

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

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