はじめに
Hugo が v0.43 からSass/Scss をサポートしたので、この機能を使ってブログのデザインを変更しました。
設定方法や、困ったことなどをまとめます。
注意 (2018/08/26 時点)
Netlify は Hugo の extended をフォローしておらず、Sass/Scss のビルド機能が利用できません。
ワークアラウンド対応を本記事の最後に記載しています。
Hugo で Sass/Scss を使う
まずは、assets/scss/
に Scss ファイルを用意します。(本記事ではassets/scss/main.scss
を用意)
テンプレートで以下のように定義することで利用できます。
{{ $styles := resources.Get "scss/main.scss" | toCSS | postCSS | minify |
fingerprint }}
<link
rel="stylesheet"
href="{{ $styles.Permalink }}"
integrity="{{ $styles.Data.Integrity }}"
media="screen"
/>
ファイルに対する処理をパイプで書き連ねられます。この例では以下の順番で処理しています。
- CSS に変換
- PostCSS を実行
- minify を実行
- fingerprint を生成
PostCSS を使う場合
PostCSS を使う場合はpostcss-cli
モジュールが必要です。先にインストールしておきましょう。
$ npm install -g postcss-cli
ビルドをする
ビルドはいつもどおりhugo
コマンドを実行するだけで OK です。
ビルドが成功すると、resources
ディレクトリに css ファイルが出来上がります。
Netlify でデプロイできない問題が発生
v0.43 以降から Sass のビルドができるようになりましたが、利用するためには Hugo の extended バージョンが必要です。
❌: v0.46
⭕: v0.46/extended
Netlify では extended バージョンがまだサポートされていないためビルドが行えません。
関連 Issue
Netlify でデプロイするためのワークアラウンド
ビルドして生成されるresources
ディレクトリを一時的にコミットすることで対応しました。
こうすることでビルド時に resources の生成がパスされるようになりデプロイが通ります。
おわりに
Sass/Scss が使えるようになったことで、より使いやすくなりました。
この機能が使えるのは v0.43 以降の extended バージョンのみです。そして、Netlify ではまだ extended バージョンがサポートされていないため、先にresources
ディレクトリを含めておく必要がありました。