メインコンテンツへスキップ
  1. 記事一覧/

GoHugoでSassy CSSを使い始める

· loading · loading ·
仁才徳
著者
仁才徳
韓国ソウル在住のリーダー兼ソフトウェアエンジニア

このサイトのCSSが、いつの間にか長くて繰り返しだらけの1ファイルに育ってしまったので、ようやくSASSに移行しました。GoHugoでサイトを運用しているなら、15分の作業で、その後スタイルシートを触るたびに元が取れるタイプの改善です。

セットアップの手順をまとめておきます。

そもそもなぜSASSなのか
#

素のCSSは、ページ数が少し増えただけで散らかり始めます。SASSなら変数・ネスト・ミックスイン・関数が使えるので、色や共通のレイアウト定義をあちこちにコピペせず、一箇所にまとめられます。そしてHugoユーザーにとって一番うれしいのは、Hugo PipesがSCSSをそのままコンパイルしてくれること。別のビルドツールもウォッチャースクリプトも要りません。

作業中に開いておくと便利なページはこの2つです。

セットアップ
#

1. assetsディレクトリを用意する
#

Hugoはプロジェクトのルートにあるassetsフォルダを見に行くので、そこに作成(または移動)します。resourcesフォルダの中に置きたい場合は、config.tomlでHugoに場所を教えてあげます。

assetDir = "resources/assets"

2. sassフォルダを作る
#

assetsの中にsassというフォルダを作ります。SCSSファイルはここに置きます。

3. エントリーポイントを追加する
#

sassフォルダの中にmain.scssを作成します。Hugoがコンパイルするのはこのファイルなので、動作確認を兼ねて少しSCSSを書いておきましょう。

// assets/sass/main.scss

// 変数
$primary-color: #3498db;

// ミックスイン
@mixin center {
  display: flex;
  justify-content: center;
  align-items: center;
}

// スタイル
body {
  font-family: Arial, sans-serif;
  background-color: $primary-color;
}

h1 {
  @include center;
  color: white;
}

4. テンプレートに組み込む
#

head.htmlパーシャルで、コンパイル済みスタイルシートを読み込んでminifyします。

{{ $style := resources.Get "sass/main.scss" | resources.ToCSS | resources.Minify }}
<link rel="stylesheet" href="{{ $style.Permalink }}">

ここのファイル名が、実際のエントリーポイント(main.scss)と一致しているかだけ確認してください。

スタイルの分割
#

サイトが育ってきたら、SCSSをパーシャルに分割してmain.scssからインポートします。

// assets/sass/_variables.scss
$primary-color: #3498db;

// assets/sass/_mixins.scss
@mixin center {
  display: flex;
  justify-content: center;
  align-items: center;
}

// assets/sass/main.scss
@import "variables";
@import "mixins";

body {
  background-color: $primary-color;
}

h1 {
  @include center;
  color: white;
}

本当にこれだけです。4ステップで、あとはビルドのたびにHugoがスタイルを再コンパイルしてくれます。アセットパイプラインと格闘する覚悟で臨んだのに、拍子抜けするほどあっさり動きました。