Розробка сайту на Hugo (Static Site Generator)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка сайту на Hugo (Static Site Generator)
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розробка сайту на Hugo (Static Site Generator)

Hugo — генератор статичних сайтів на Go. Основна перевага над Jekyll та Eleventy — швидкість збірки: 1000 сторінок збираються за секунди, а не хвилини. Для великих сайтів (документація, новинні портали, багатомовні маркетингові сайти) це критично. Деплой — статика у CDN, ніякого сервера додатків.

Архітектура проекту

mysite/
├── archetypes/          # Шаблони front matter для нових контент-файлів
├── assets/              # Файли для Hugo Pipes (SCSS, JS, зображення)
├── config/              # Конфігурація (hugo.toml або config/_default/)
├── content/             # Markdown-контент
│   ├── blog/
│   ├── services/
│   └── _index.md
├── data/                # YAML/JSON/TOML дані (глобальні змінні)
├── i18n/                # Файли перекладів
├── layouts/             # Go-шаблони
│   ├── _default/
│   │   ├── baseof.html  # Базовий шаблон
│   │   ├── list.html
│   │   └── single.html
│   ├── partials/
│   └── shortcodes/
├── static/              # Статичні файли (копіюються як є)
└── themes/              # Підключаємі теми (git submodule)

Конфігурація hugo.toml

baseURL = "https://example.com/"
languageCode = "uk"
defaultContentLanguage = "uk"
title = "Назва сайту"
theme = "mytheme"

[params]
  description = "Опис сайту"
  author = "Компанія"
  googleAnalytics = "G-XXXXXXXXXX"

[markup.goldmark.renderer]
  unsafe = true  # Дозволити HTML у Markdown

[markup.highlight]
  style = "monokai"
  lineNos = true

[minify]
  disableCSS = false
  disableHTML = false
  disableJS = false

[outputs]
  home = ["HTML", "RSS", "JSON"]
  page = ["HTML"]
  section = ["HTML", "RSS"]

Мультимовність

Hugo має вбудовану підтримку i18n. Два підходи:

Підхід 1: контент за папками

# hugo.toml
defaultContentLanguage = "uk"

[languages.uk]
  languageName = "Українська"
  weight = 1

[languages.en]
  languageName = "English"
  weight = 2
  contentDir = "content/en"

Підхід 2: за суфіксом файлу

content/
  blog/
    post.uk.md
    post.en.md

Рядки інтерфейсу зберігаються у i18n/uk.toml:

readMore = "Читати далі"
publishedOn = "Опубліковано"
tags = "Теги"

У шаблоні: {{ i18n "readMore" }}

Hugo Pipes: обробка ассетів

Hugo Pipes замінює Webpack/Vite для базових задач:

{{/* layouts/partials/head.html */}}

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

{{ $js := resources.Get "js/main.js" }}
{{ $script := $js | resources.Minify | resources.Fingerprint }}
<script src="{{ $script.Permalink }}" defer></script>

Для складної JS-збірки (ES-модулі, npm-пакети) Hugo Pipes інтегрується з ESBuild:

{{ $opts := dict "targetPath" "js/bundle.js" "minify" true "target" "es2020" }}
{{ $js := resources.Get "js/main.js" | js.Build $opts }}

Таксономії та контент-типи

Таксономії — вбудований механізм Hugo для тегів, категорій, авторів:

[taxonomies]
  tag = "tags"
  category = "categories"
  author = "authors"
  series = "series"

Front matter посту:

---
title: "Назва статті"
date: 2024-03-15
draft: false
tags: ["hugo", "jamstack"]
categories: ["Розробка"]
authors: ["ivan-petrov"]
series: ["Основи Hugo"]
featured_image: "images/cover.jpg"
description: "Короткий опис для SEO"
---

Сторінка тегу /tags/hugo/ генерується автоматично та рендерится через layouts/taxonomy/tag.html.

Робота з даними

Data файли (data/*.yaml) доступні глобально у шаблонах:

# data/team.yaml
- name: "Іван Петров"
  role: "Технічний директор"
  photo: "ivan.jpg"
  linkedin: "https://linkedin.com/in/ivanpetrov"
{{/* layouts/partials/team.html */}}
{{ range $.Site.Data.team }}
<div class="team-card">
  <img src="/images/team/{{ .photo }}" alt="{{ .name }}">
  <h3>{{ .name }}</h3>
  <p>{{ .role }}</p>
</div>
{{ end }}

Деплой та CI/CD

Netlify — найпростіший варіант. Файл netlify.toml:

[build]
  command = "hugo --minify"
  publish = "public"

[build.environment]
  HUGO_VERSION = "0.121.0"
  HUGO_ENV = "production"

[[headers]]
  for = "/*"
  [headers.values]
    X-Frame-Options = "DENY"
    X-Content-Type-Options = "nosniff"
    Cache-Control = "public, max-age=31536000, immutable"

GitHub Actions → S3 + CloudFront:

- name: Build Hugo
  run: hugo --minify --baseURL="https://example.com/"

- name: Deploy to S3
  run: aws s3 sync public/ s3://my-bucket --delete

- name: Invalidate CloudFront
  run: aws cloudfront create-invalidation --distribution-id ${{ secrets.CF_DIST_ID }} --paths "/*"

Продуктивність

Статичний Hugo-сайт при правильній налаштуванні отримує 95–100 балів Lighthouse з коробки. Критичні налаштування:

  • resources.Fingerprint для кеш-бастинга ассетів
  • loading="lazy" для зображень нижче fold
  • Hugo Image Processing для генерації WebP та потрібних розмірів: {{ $img := .Resources.GetMatch "cover.*" | images.Resize "800x WebP" }}
  • Preload для критичних шрифтів

Терміни

Простий корпоративний сайт на готовій темі з кастомним контентом — 5–7 днів. Розробка з нуля: архітектура + шаблони + мультимовність + CI/CD — 2–4 тижні. Крупний документаційний портал або новинний сайт з сотнями сторінок — 1–2 місяці.