[Middleman 3] Middleman: Asset Pipeline
なんとなく整理できてきたのでソースをまとめます。
% middleman version
Middleman 3.3.6
Contents
Asset Pipeline
Rails 3.1 から Asset Pipeline という仕組みが追加されました。
Middleman にも同じ機能があり、Sprockets(middleman-sprockets) あたりがその辺りを担っています。
Sprockets
Sprockets は独立しているので、ruby スクリプトから使うこともできるそう。
こういった機能を提供してくれます。
Asset Pipelineを備えたRails 3.1のリリースに向けて、その根幹を担うSprocketsをちょっと触っておくことにした。 – Sooey
- 複数のサイトやアプリケーションで共通するコードを再利用可能な形で切り出した構成にできる
- JavaScriptプラグインという単位でCSSや画像もまとめることができる
- JavaScriptファイルを1つにまとめてブラウザに読ませることによる高速化
- HTTPリクエストの回数を減らすことができる
- JavaScriptをコメント付きの複数のファイルおよびディレクトリとして整理できる
- ソースコードをサイトやアプリケーションのルートディレクトリ外で管理することもできる
- コメントは最終的に除去されてブラウザに渡されるため、沢山のコメントを書いても問題にならない
Rails でも。
Rails3.1から導入されたAsset Pipelineがよくわかってなかったから調べた – (゚∀゚)o彡 sasata299’s blog
- cssやjsは各々一つのファイルにまとめられる(ブラウザのリクエスト回数を減らせる)
- それらのファイルは自動で圧縮/難読化される(ファイルサイズを減らして負荷軽減)
- ついでに、SassやCoffeeScriptを使ってcssやjsを記述することが可能になっている
concat, minify, uglify プラスαを担っています。
ちなみに .scss, .coffee, .erb などの拡張子に変更するだけでコンパイルしてくれるますが、これは Asset Pipeline の機能がやってくれているからという関係性になります。
CSS と JavaScript はそれぞれどのように指定すべきか
ということで、Middleman(おそらく Rails も)では、こんな形で指定すると理解しています。
- CSS は SASS の @import で、JavaScript は Sprockets を使うのが基本。
- Bower 等で用意した外部ライブラリを取り込むときには、CSS も Sprockets を使うと便利。
つかいかた
具体的なつかいかたを確認してみます。
CSS
main.scss を編集します。
- source/css/main.scss
- source/css/foo.scss
- source/css/_bar.scss
SASS を利用しているので、@import
が自然か。
@import "foo"
@import "bar"
Sprockets を使う場合は、コメントにこのように書きます。
//= require "foo.scss"
//= require "_bar.scss"
以下のように書くと、sorce/css/ 以下をまとめて読み込んでくれます。
//= require_tree .
どちらも _bar.scss はパーシャルファイルとして扱われるので、middleman build
すると以下のファイル配置になります。
- build/css/main.css
- build/css/foo.css
main.css は、main, foo, bar がまとまったものとなります。
JavaScritp
main.js を編集します。
- source/js/main.js
- source/js/foo.js
- source/js/_bar.js
上述した CSS の Sprockets 版と同じとなります
外部ライブラリを利用するには
自前で用意したファイルについては、上述の方法で下記のパスの通ったディレクトリに配置すれば問題なく使えます。
- source/css/
- source/js/
- source/img/
- source/fonts/
では、外部のライブラリを利用するにはどうするのでしょうか。
上記パスにファイルをコピーすれば良いのですが、いまならば Bower で管理する流れが自然でしょう。
というわけで、下記をリライトしました。
補遺
- Ruby on Rails チュートリアル:実例を使って Rails を学ぼう
- The Asset Pipeline — Ruby on Rails Guides
- Asset Pipeline については、パーフェクト Ruby on Rails にまとめられているらしい。