初めての Middleman シリーズ初めてのMiddleman:SCSSのコンパイルとテンプレートの基礎
前回の記事初めてのMiddleman:パーシャルを使ったコンテンツのモジュール化でパーシャル機能を使って再利用可能なモジュールを作ることができました。今回はSCSSをコンパイルしてテンプレートフォーマットについて勉強してみます。
とりあえずコンパイルしてみる
何か設定が必要なのか迷ってしまいますが、何もいりません。config.rb
をいじる必要もありません。
SCSSファイルを作る
source
ディレクトリにstyle.css.scss
を作って簡単なSCSSを書いてみます。
$color: #000;
body {
background: $color;
}
ビルド
$ middleman build
を実行してみます。build
フォルダにstyle.css
ができていれば成功です。
/* line 3, /Users/nukos/Projects/example.com/source/style.css.scss */
body {
background: #000; }
つまり、どこであっても拡張子のルールに沿っていればコンパイルできるわけです。コンパイル対象を予め定義する必要がないのはTiltのおかげです。テンプレートとテンプレートエンジンのオプションは公式ドキュメントに詳しく紹介されています。
これでSCSSをコンパイルする方法はわかりました。
コンパイルしたCSSをHTMLに指定する
CSSをHTMLに指定するには直接<link>
タグを書いても良いですが、アセットヘルパーを使うのが便利です。アセットヘルパーについては公式ドキュメントのアセットヘルパで紹介されています。
アセットヘルパーを使うには
アセットヘルパーを使うには下準備が必要です。例えばCSSであればCSSファイルがどこのディレクトリにまとめられているのか予め定義しておく必要があります。この指定はconfig.rb
に記述します。
config.rb
今回、CSSファイルをassets/css
にまとめたいので以下のように定義しておきます。
set :css_dir, 'assets/css'
common.css.scss
実際にassets/css
ディレクトリを作り、common.css.scss
ファイルを作っておきます。
$color: #000;
body {
background: $color;
}
アセットヘルパーを使ってCSSを指定する
アセットヘルパーを使ってレイアウトファイルにCSSを読み込ませます。アセットヘルパーにはファイル名の拡張子を抜いたものcommon.css.scss
であればcommon
を指定します。<%= stylesheet_link_tag "common" %>
こんな感じです。これを<head>
の中に指定します。
layout.erb
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title><%= current_page.data.title || "The Middleman" %></title>
<%= stylesheet_link_tag "common" %>
</head>
<body>
<%= partial('modules/header', :locals => { :description => 'hogehoge' }) %>
<%= yield %>
</body>
</html>
ビルド
ビルドしてみます。
$ middleman build
update build/assets/css/common.css
update build/index.html
ビルドされたHTMLにコンパイルされたCSSのパスが指定されたタグが埋め込まれていれば成功です。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Hello World</title>
<link href="/assets/css/common-d7f822e6.css" rel="stylesheet" type="text/css" />
</head>
<body>
<header>
<h1>example.com</h1>
<p>hogehoge</p>
</header>
<p>Hello World</p>
</body>
</html>
これでSCSSをコンパイルしてHTMLに読み込むことができるようになりました。
SCSSコンパイル時のoutputstyleとlinecomments
SCSSをコンパイルする際のoutput_style
とline_comments
を制御するにはconfig.rb
にcompass_config
を指定します。
configure :build do
compass_config do |config|
config.output_style = :compressed
config.line_comments = false
end
end
この指定で、$ middleman build
の時はoutputstyleを:compressed
に、linecommentsをfalse
にすることができます。
Live Reload
Live Reloadを有効にするにはconfig.rb
に以下の指定を追加します。
configure :development do
activate :livereload
end
その他のアセットヘルパー
CSS以外にもJavaScriptや画像、リンク等のアセットヘルパーが用意されています。
config.rb
JavaScriptや画像もどこに置かれているかconfig.rb
に定義しておきます。
set :css_dir, 'assets/css'
set :js_dir, 'assets/js'
set :images_dir, 'assets/images'
呼び出し方はCSSと同じです。ヘルパーにはパラメータを渡すことでclassやwidth等の属性値を指定できます。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title><%= current_page.data.title || "The Middleman" %></title>
<%= stylesheet_link_tag "common" %>
<%= javascript_include_tag 'application' %>
</head>
<body>
<div id="logo"><%= image_tag 'logo.png', :width => '100', :class => 'logo' %></div>
<%= partial('modules/header', :locals => { :description => 'hogehoge' }) %>
<%= yield %>
</body>
</html>
これでサイトを作るために最低限必要な機能を覚えました。
次回は一歩踏み込んでSCSSにbourbon, neatを導入してみたいと思います。
次回:初めてのMiddleman:Sass MixinライブラリのBourbon, Neatを導入してみる
シリーズ
- 初めてのMiddleman:rbenv, bundler 環境でMiddlemanを使ったHello World
- 初めてのMiddleman:レイアウト機能でレイアウトとコンテンツを分離する
- 初めてのMiddleman:パーシャルを使ったコンテンツのモジュール化
- 初めてのMiddleman:SCSSのコンパイルとテンプレートの基礎
- 初めてのMiddleman:Sass MixinライブラリのBourbon, Neatを導入してみる
- 初めてのMiddleman:データファイルとデータファイルを使った動的ページ生成
- 初めてのMiddleman:サイトにブログ機能を追加する
- 初めてのMiddleman:Amazon S3にビルドされたファイルを同期する
- 初めてのMiddleman:HTML/CSS/JS/画像をビルド時に圧縮する
- 初めてのMiddleman:設定について
- 初めてのMiddleman:静的サイトのキャッシュとasset_hash拡張を使ったキャッシュのパージ
- 初めてのMiddleman:Middleman::S3Syncで使うAWS IAMユーザーのアクセスキー管理方法について
- 初めてのMiddleman:Helperを使ってGravatarのアイコンを表示する
- 初めてのMiddleman:アセットパイプラインを使った外部アセットファイルの読み込みと結合
- 初めてのMiddleman:Bowerを使ってjQueryなどのライブラリをロードする
- 初めてのMiddleman:スケルトンを自作する方法
- 初めてのMiddleman:Middleman Blogの記事データを使いやすく管理する方法
- 初めてのMiddleman:Middleman-blogのシングルブログを前提としたSkeletonを作った
- 初めてのMiddleman:Middleman-blogでマルチブログを試してSkeletonを作った
- 初めてのMiddleman:Markdown EngineをkramdownからRedcarpetに切り替える
- 初めてのMiddleman:RedcarpetとMiddleman::Rougeを使ったシンタックスハイライト
- 初めてのMiddleman:Middleman-Syntaxを使ったシンタックスハイライト
- 初めてのMiddleman:Middleman-Blogで記事毎に画像を管理する方法
- 初めてのMiddleman:Gulpを使ってサムネイル画像を生成する
- 初めてのMiddleman:Middleman-OGPのOGP画像指定を相対パスで設定する
- 初めてのMiddleman:Middleman-OGPでMiddleman-BLogにOGPを設定する
- 初めてのMiddleman:Middleman-Titleでタイトルタグを手軽に設定する
- 初めてのMiddleman:多言語化 - 言語ファイルの作成とヘルパーの埋め込み
- 初めてのMiddleman:Middleman-blogにカテゴリやシリーズなどのカスタムコレクションを追加する方法
- 初めてのMiddleman:Bowerで管理されているフォントファイルをインポートする