HugoにTailwindCSSを適用する方法といえばpostcssをpipeとして使用しているケースが多いですが、僕が調べた限りほとんどのケースで動作が正常に動きませんでした。なのでpostcssを使用せずにTailwindCSSをビルドするやり方でHugoに適用する方法でやってみました。
hugo new site hugotails
hugo new theme tailwind-theme
// hugo.toml
baseURL = 'http://example.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
theme = "tailwind-theme"
rootディレクトリで以下のコマンドを実行します。
npm install -D tailwindcss
npx tailwindcss init
tailwind.config.jsが作成されます。content
プロパティにHugoのテーマのパスを指定することで、不要なtailwindcssのコードを削除してくれます。 これにより、ビルド時のファイルサイズを小さくすることができます。
// tailwind.config.js
module.exports = {
content: ["./themes/tailwind-theme/layouts/**/**.html"],
theme: {
extend: {}
},
variants: {},
plugins: []
};
// input.css
@tailwind base;
@tailwind components;
@tailwind utilities;
ここまでできたら、Tailwind Cliコマンドでビルドします。
npx tailwindcss -i ./themes/tailwind-theme/assets/css/input.css -o ./themes/tailwind-theme/assets/css/output.css
上記のコマンドを実行するとinput.css
の同じディレクトリにoutput.css
が作成されます。Tailwindで使用したクラスのみが出力されていることを確認してください。
先ほど作成したoutput.css
をHugoのテンプレートに読み込み、表示されるか確認します。
テーマのindex.html
を編集します。
<!-- themes/tailwind-theme/layouts/index.html -->
{{ define "main" }}
<h1 class="text-3xl font-bold underline">Hello world! ここが変更</h1>
{{ end }}
テーマのbaseof.html
を編集します。
<!-- themes/tailwind-theme/layouts/_default/baseof.html -->
<!DOCTYPE html>
<html>
{{- partial "head.html" . -}}
<body class="bg-gray-800 text-gray-50">
{{- partial "header.html" . -}}
<div id="content">{{- block "main" . }}{{- end }}</div>
{{- partial "footer.html" . -}}
</body>
</html>
テーマのhead.html
を編集し、output.css
を読み込みます。
<head>
<!-- themes style -->
{{ with resources.Get "css/output.css"}}
<link rel="stylesheet" href="{{ .RelPermalink }}" />
{{ end }}
</head>
サーバーを起動して、表示されているか確認します。