Вот инструкция:
- Установить Tailwind.css CLI >= 4.0
- Настроить
hugo_stats
- Импортировать Tailwind в css
- Подключить css через
css.TailwindCSS
- Настроить Tailwind (необязательно)
- …
- Профит!
1. Ставим CLI
У Tailwind есть пакет с CLI в NPM. Запустите npm init
, если в проекте ещё нет ноды.
npm install --save-dev tailwindcss @tailwindcss/cli
Чтобы не тянуть node.js, есть standalone бинарник.
2. Настраиваем статсу
Tailwind пересобирает стили под сайт. Это нужно, чтобы не тащить ненужные классы. Ещё Tailwind генерирует новые классы. Например, если вы написали some-utility-[420px]
, в Tailwind из коробки нет такого класса. Поэтому для сборки нужна статистика: что используется на сайте.
Hugo умеет писать статистику в файл hugo_stats.json
.
[build]
[build.buildStats]
enable = true
[[build.cachebusters]]
source = 'assets/notwatching/hugo_stats\.json'
target = 'css'
[[build.cachebusters]]
source = '(postcss|tailwind)\.config\.js'
target = 'css'
[module]
[[module.mounts]]
source = 'assets'
target = 'assets'
[[module.mounts]]
disableWatch = true
source = 'hugo_stats.json'
target = 'assets/notwatching/hugo_stats.json'
3. Импортируем Tailwind в css
Положим это в assets/css/main.css
.
@import "tailwindcss";
@source "hugo_stats.json";
Импортируем явно hugo_stats.json
, потому что Tailwind CLI уважает .gitignore
.
4. Подключим css
Теперь сделаем partial, чтобы подключить наш main.css
. В нём запустим css.TailwindCSS
, чтобы обработать css через Tailwind CLI.
{{ with (templates.Defer (dict "key" "global")) }}
{{ with resources.Get "css/main.css" }}
{{ $opts := dict
"minify" (not hugo.IsDevelopment)
"inlineImports" true
}}
{{ with . | css.TailwindCSS $opts }}
{{ if hugo.IsDevelopment }}
<link rel="stylesheet" href="{{ .RelPermalink }}">
{{ else }}
{{ with . | fingerprint }}
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
Подключим partial в шаблоне. Я сделаю это в baseof.html
.
<head>
<!-- ... -->
{{ partialCached "css.html" . }}
<!-- ... -->
<head>
5. Настроим Tailwind (необязательно)
Создайте tailwind.config.js
, чтобы законфигурировать Tailwind.
// Example `tailwind.config.js` file
const colors = require('tailwindcss/colors')
module.exports = {
theme: {
colors: {
gray: colors.coolGray,
blue: colors.lightBlue,
red: colors.rose,
pink: colors.fuchsia,
},
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
},
extend: {
spacing: {
'128': '32rem',
'144': '36rem',
},
borderRadius: {
'4xl': '2rem',
}
}
},
variants: {
extend: {
borderColor: ['focus-visible'],
opacity: ['disabled'],
}
}
}