Введение в Hugo
Hugo — это мощный и быстрый генератор статических сайтов, написанный на языке Go. Он идеально подходит для создания блогов, документации и персональных сайтов. В этой статье мы разберем, как создавать и редактировать статьи в Hugo.
Структура проекта Hugo
Перед тем как начать работу со статьями, важно понимать базовую структуру проекта Hugo:
blog/
├── archetypes/ # Шаблоны для новых статей
├── content/ # Папка с контентом
│ └── posts/ # Статьи блога
├── data/ # Данные в формате YAML/JSON
├── layouts/ # HTML шаблоны
├── static/ # Статические файлы (CSS, JS, изображения)
├── themes/ # Темы оформления
└── hugo.toml # Конфигурационный файл
Создание новой статьи
Автоматическое создание
Самый простой способ создать новую статью — использовать команду Hugo:
hugo new posts/название-статьи.md
Эта команда создаст новый файл в папке content/posts/ с базовыми метаданными.
Ручное создание
Вы также можете создать файл вручную в папке content/posts/. Каждая статья должна начинаться с front matter — блока метаданных в формате YAML:
---
title: "Заголовок статьи"
date: 2025-01-09T10:00:00Z
draft: false
author: "Ваше имя"
description: "Краткое описание статьи"
tags: ["тег1", "тег2", "тег3"]
categories: ["категория1", "категория2"]
---
Основные элементы front matter
Обязательные поля
- title: Заголовок статьи
- date: Дата публикации в формате ISO 8601
- draft:
trueдля черновиков,falseдля опубликованных статей
Дополнительные поля
- author: Автор статьи
- description: Описание для SEO и превью
- tags: Теги статьи (массив строк)
- categories: Категории статьи
- image: Превью изображение
- slug: Кастомный URL статьи
Написание контента
Markdown синтаксис
Hugo использует расширенный Markdown для форматирования текста:
# Заголовок первого уровня
## Заголовок второго уровня
### Заголовок третьего уровня
**Жирный текст** и *курсив*
- Маркированный список
- Второй элемент
- Вложенный элемент
1. Нумерованный список
2. Второй элемент
[Ссылка на сайт](https://example.com)

Блоки кода
Для вставки кода используйте тройные обратные кавычки:
```python
def hello_world():
print("Hello, Hugo!")
```
Цитаты
> Это блок цитаты
> Может занимать несколько строк
Таблицы
| Заголовок 1 | Заголовок 2 | Заголовок 3 |
|-------------|-------------|-------------|
| Ячейка 1 | Ячейка 2 | Ячейка 3 |
| Строка 2 | Данные | Значение |
Работа с изображениями
Размещение изображений
Изображения можно разместить в папке static/images/ или использовать Page Bundles:
content/
└── posts/
└── my-article/
├── index.md
├── image1.jpg
└── image2.png
Вставка изображений

# или для Page Bundle:

Математические формулы
Если в конфигурации включена поддержка MathJax или KaTeX, можно использовать LaTeX:
Инлайн формула: $E = mc^2$
Блочная формула:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
Управление черновиками
Работа с черновиками
Установите draft: true в front matter для создания черновика:
---
title: "Черновик статьи"
draft: true
---
Просмотр черновиков
Для просмотра черновиков при разработке используйте флаг -D:
hugo server -D
Организация контента
Использование категорий и тегов
---
categories: ["Веб-разработка", "Туториалы"]
tags: ["Hugo", "Markdown", "Блог", "Статический сайт"]
---
Структурирование по папкам
content/
├── posts/
│ ├── 2024/
│ │ └── my-article.md
│ └── 2025/
│ └── new-article.md
└── tutorials/
└── hugo-tutorial.md
Шорткоды Hugo
Hugo предоставляет шорткоды для расширения функциональности:
Примечание: Некоторые шорткоды (например, x для Twitter и gist) могут быть недоступны или устаревшими в зависимости от версии Hugo и настроек темы.
Создание пользовательских шорткодов
Можно создать собственные шорткоды в папке layouts/shortcodes/:
<!-- layouts/shortcodes/note.html -->
<div class="note">
<strong>Примечание:</strong> {{ .Inner }}
</div>
Использование:
Это важное примечание!
Автоматизация рабочего процесса
Скрипты для создания статей
Создайте скрипт для автоматизации создания статей:
#!/bin/bash
# new-post.sh
if [ -z "$1" ]; then
echo "Использование: ./new-post.sh название-статьи"
exit 1
fi
hugo new "posts/$1.md"
echo "Создана новая статья: posts/$1.md"
Git hooks
Настройте автоматическое развертывание через Git hooks:
#!/bin/bash
# deploy.sh
echo "Сборка сайта..."
hugo
echo "Развертывание..."
# Ваши команды для развертывания
Локальная разработка
Запуск сервера разработки
# Запуск с автообновлением
hugo server
# С черновиками и будущими статьями
hugo server -D -F
# На определенном порту
hugo server -p 8080
Просмотр изменений
Hugo автоматически перезагружает страницы при изменении файлов. Это значительно упрощает процесс редактирования.
Сборка и развертывание
Создание статического сайта
# Сборка для продакшена
hugo
# Очистка и сборка
hugo --gc --minify
Проверка перед публикацией
# Проверка ссылок
hugo server --navigateToChanged
# Генерация отчета
hugo --templateMetrics
Полезные советы
SEO оптимизация
- Используйте описательные заголовки
- Добавляйте метаданные description
- Используйте семантические теги
- Оптимизируйте изображения
Производительность
- Минифицируйте CSS/JS при сборке
- Используйте WebP для изображений
- Настройте кеширование
- Проверяйте размер сгенерированных файлов
Резервное копирование
Регулярно делайте резервные копии:
- Используйте Git для версионности
- Сохраняйте базу данных (если используется)
- Резервируйте статические файлы
Заключение
Hugo предоставляет мощные инструменты для создания и управления статическими сайтами. Основные преимущества:
- Скорость: Очень быстрая генерация сайтов
- Безопасность: Отсутствие базы данных
- Простота: Markdown для контента
- Гибкость: Настраиваемые темы и шаблоны
Следуя этому руководству, вы сможете эффективно создавать и редактировать статьи в Hugo. Не забывайте регулярно обновлять контент и экспериментировать с новыми возможностями платформы.