LoginSignup
4
5

More than 5 years have passed since last update.

gulp-compass がimage-url から生成するパスの意味がわからない君へ

Last updated at Posted at 2015-07-15

ゴール

(全容を掴んだ上で書きなおしたので、実際にはあまり使わない構成かもしれないが気にしない)

  • src/sass/*.scss にてimage-url("bg_body.gif") を指定
  • src/images/* に画像を配置

  • src/compiled_css/*.css にコンパイル結果が置かれる

  • dist/css/ に*.css が置かれる

    • url("../images/bg_body.gif") で参照
  • dist/images/ に画像が置かれる

検証

相対パスはどう計算される?

  • 仮説

    • コンパイル後のCSS から見た時の、project への相対パス?
    • images_dir があれば、css とimages_dir の相対パスを計算、images_dir が無ければ、project との相対パスの後ろにデフォルトのiamges_dir をくっつけるだけ?
  • 検証に使用したリポジトリ

  • 検証によく使ったコマンド

# 前回のビルド結果を消す
bundle exec gulp clean

# ファイルの配置を確認。node_modules とかを避けたいのでdir 指定
ll ; tree dist src

# ビルド
bundle exec gulp build

デバッグ

  • gulp のcompass にdebug: true を渡すと、実際に実行されているcompass コマンドが表示される

結論

  • config.rb の設定は無視される
  • relative true のときはcss ファイルからみたときのimages のディレクトリの相対パスを取得する
  • その他の条件も、↑のコードを読めばわかる、かも。

  • relative false だとディレクトリ構成が違っていても最終的に辻褄を合わせることはできるが、build のときにimages が無いよとwarning が出てしまう

    • compile 前後でディレクトリ構成が変わらない場合
      • relative true で、普通にcompile 前のパスを指定 (css, image)
      • => warning 出ない
    • compile 前後でディレクトリ構成が変わる場合
      • relative false で、普通にcompile 前のパスを指定 (css, image)
      • => warning 出る
  • こうするとよさそう

    • compile 前後でディレクトリ構成は揃える
      • build 後のcss から見たimages の位置を、compile 前後で同じにする
    • relative はtrue
    • image もパスを指定する

余談

最初からソースコード見れば検証シート不要だったかな。。でもソースコードがなかなか見つけられなかったからしょうがない。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5