Migração Jekyll para Hugo: Guia Completo#
Se você está pensando em migrar seu site Jekyll para Hugo, este guia completo vai te ajudar a fazer essa transição de forma eficiente e sem perder funcionalidades.
Por que migrar para Hugo?#
Vantagens do Hugo sobre Jekyll#
- 🚀 Performance Superior: Hugo é extremamente rápido, processando milhares de páginas em segundos
- 📦 Simplicidade: Configuração mais simples e estrutura de diretórios mais intuitiva
- 🔧 Manutenção: Menos dependências e problemas de compatibilidade
- ⚡ Build Rápido: Tempos de build significativamente menores
- 🎯 Foco em Conteúdo: Melhor para blogs e sites estáticos
Compatibilidade com GitHub Pages#
✅ Totalmente compatível - Hugo é suportado nativamente pelo GitHub Pages
✅ Deploy automático - Funciona perfeitamente com GitHub Actions
✅ Custo zero - Mantém a hospedagem gratuita
Pré-requisitos#
Instalação do Hugo#
1
2
3
4
5
6
7
8
9
10
11
| # macOS
brew install hugo
# Ubuntu/Debian
sudo apt-get install hugo
# Windows (Chocolatey)
choco install hugo
# Verificar instalação
hugo version
|
Fase 1: Preparação e Estrutura Base#
1.1 Criar Novo Site Hugo#
1
2
3
4
5
6
| # Criar novo site
hugo new site meu-blog-hugo
cd meu-blog-hugo
# Inicializar git
git init
|
1.2 Estrutura de Diretórios Hugo#
meu-blog-hugo/
├── archetypes/ # Templates para novos posts
├── assets/ # CSS, JS, imagens (processados)
├── content/ # Conteúdo (posts, páginas)
│ ├── posts/ # Posts do blog
│ └── _index.md # Página inicial
├── data/ # Dados estruturados
├── layouts/ # Templates HTML
├── static/ # Arquivos estáticos (copiados diretamente)
├── themes/ # Temas
├── config.toml # Configuração principal
└── public/ # Site gerado (não versionar)
Fase 2: Migração de Configuração#
2.1 Converter _config.yml → config.toml#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| # config.toml
baseURL = "https://afonsorodrigues.com"
languageCode = "pt-br"
title = "Afonso Rodrigues - DevOps & SRE Blog"
theme = "hugo-theme-stack" # ou outro tema
[params]
description = "Anotações, Scripts e Dicas de DevOps, SRE, Kubernetes e AWS"
author = "Afonso Rodrigues"
email = "afonsoaugustoventura@gmail.com"
[params.social]
github = "afonsoaugusto"
twitter = "Afonsoavr"
linkedin = "in/afonsoavr"
instagram = "afonsoavr"
[markup]
[markup.highlight]
style = "github"
lineNos = true
[menu]
[[menu.main]]
name = "Home"
url = "/"
weight = 1
[[menu.main]]
name = "Sobre"
url = "/about"
weight = 2
[[menu.main]]
name = "Utils"
url = "/utils"
weight = 3
[[menu.main]]
name = "Arquivo"
url = "/archive"
weight = 4
[[menu.main]]
name = "Tags"
url = "/tags"
weight = 5
|
Fase 3: Migração de Conteúdo#
3.1 Migrar Posts#
1
2
3
4
5
| # Copiar posts do Jekyll
cp -r /caminho/jekyll/_posts/* content/posts/
# Renomear arquivos (remover data do nome)
# 2020-01-13-welcome-to-here.markdown → welcome-to-here.md
|
3.2 Ajustar Front Matter dos Posts#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # Antes (Jekyll)
---
layout: post
title: "Welcome to Here!"
date: 2020-01-13 13:15:00 +0000
categories: welcome
---
# Depois (Hugo)
---
title: "Welcome to Here!"
date: 2020-01-13T13:15:00Z
categories: ["welcome"]
draft: false
---
|
3.3 Migrar Páginas#
1
2
3
4
| # Criar páginas
mkdir -p content/
cp about.markdown content/about.md
cp pages.markdown content/pages.md
|
Fase 4: Migração da Página Utils#
4.1 ✅ FUNCIONALIDADE UTILS É TOTALMENTE COMPATÍVEL#
A página utils.html
pode ser migrada 100% para Hugo! Aqui está como:
4.2 Criar Página Utils em Hugo#
1
2
| # Criar página utils
hugo new content/utils.md
|
4.3 Conteúdo da Página Utils#
1
2
3
4
5
6
7
8
| ---
title: "Utils"
description: "Ferramentas úteis - Contador de caracteres e conversor de horário UTC/GMT-3"
date: 2024-01-01
layout: "utils"
---
<!-- O HTML da página utils.html pode ser copiado diretamente -->
|
4.4 Layout Utils (layouts/utils.html)#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| {{ define "main" }}
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div class="bg-white rounded-lg shadow-lg p-8">
<h1 class="text-3xl font-bold text-gray-800 mb-8 text-center">Ferramentas Úteis</h1>
<!-- Contador de Caracteres -->
<div class="mb-12">
<!-- ... resto do HTML da utils.html ... -->
</div>
<!-- Conversor de Horário -->
<div class="mb-8">
<!-- ... resto do HTML da utils.html ... -->
</div>
</div>
</div>
<script>
// Todo o JavaScript da utils.html pode ser copiado diretamente
// ... código JavaScript existente ...
</script>
{{ end }}
|
4.5 Assets JavaScript#
1
2
3
| # Copiar JS para assets
mkdir -p assets/js/
cp assets/js/main.js assets/js/main.js
|
Fase 5: Migração de Layouts e Templates#
5.1 Layout Base (layouts/_default/baseof.html)#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ if .Title }}{{ .Title }} | {{ end }}{{ .Site.Title }}</title>
<link rel="stylesheet" href="{{ "css/main.css" | relURL }}">
</head>
<body>
{{ partial "header.html" . }}
<main>
{{ block "main" . }}{{ end }}
</main>
{{ partial "footer.html" . }}
<script src="{{ "js/main.js" | relURL }}"></script>
</body>
</html>
|
1
2
3
4
5
6
7
8
9
| <header>
<nav>
<a href="{{ "/" | relURL }}">Home</a>
<a href="{{ "/about" | relURL }}">Sobre</a>
<a href="{{ "/utils" | relURL }}">Utils</a>
<a href="{{ "/archive" | relURL }}">Arquivo</a>
<a href="{{ "/tags" | relURL }}">Tags</a>
</nav>
</header>
|
Fase 6: Migração de Assets#
6.1 CSS e JavaScript#
1
2
3
4
| # Copiar assets
cp -r assets/css/* static/css/
cp -r assets/js/* static/js/
cp -r assets/images/* static/images/
|
6.2 Configurar Processamento de Assets#
1
2
3
4
5
| # config.toml
[params]
[params.assets]
css = ["css/main.css"]
js = ["js/main.js"]
|
Fase 7: Configuração do GitHub Actions#
7.1 Workflow Hugo (.github/workflows/hugo.yml)#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| name: Hugo CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.111.3'
extended: true
- name: Build
run: hugo --minify
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/master'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
|
Fase 8: Teste e Deploy#
8.1 Teste Local#
1
2
3
4
5
| # Servidor de desenvolvimento
hugo server -D
# Build para produção
hugo --minify
|
8.2 Deploy#
1
2
3
4
| # Commit e push
git add .
git commit -m "Migração Jekyll → Hugo"
git push origin master
|
✅ Compatibilidade da Página Utils#
Funcionalidades que FUNCIONAM 100%:#
- ✅ Contador de caracteres (JavaScript puro)
- ✅ Conversor UTC ↔ GMT-3 (JavaScript puro)
- ✅ Horário atual em tempo real (JavaScript puro)
- ✅ Interface responsiva (CSS/Tailwind)
- ✅ Todas as interações JavaScript
Vantagens no Hugo:#
- 🚀 Performance superior (build mais rápido)
- 📱 Melhor SEO nativo
- 🔧 Configuração mais simples
- 📊 Melhor organização de assets
⏱️ Tempo Estimado Total:#
- Preparação: 30 min
- Migração de conteúdo: 1-2 horas
- Configuração de layouts: 1-2 horas
- Teste e ajustes: 1 hora
- Deploy: 30 min
Total: 4-6 horas
Alternativas ao Hugo#
1. Eleventy (11ty)#
- Linguagem: JavaScript/Node.js
- Vantagens: Máxima flexibilidade, migração quase automática
- Dificuldade: Média
2. Astro#
- Linguagem: JavaScript/TypeScript
- Vantagens: Performance excepcional, foco em conteúdo
- Dificuldade: Média-Alta
3. GitBook#
- Vantagens: Editor visual, migração automática
- Dificuldade: Baixa
Conclusão#
A migração do Jekyll para Hugo é simples e oferece benefícios significativos:
- 🚀 Performance superior
- 🔧 Manutenção mais fácil
- 📱 Melhor experiência de desenvolvimento
- ✅ Compatibilidade total com GitHub Pages
- 🎯 Funcionalidades preservadas (incluindo página Utils)
A página Utils funcionará perfeitamente no Hugo, mantendo todas as funcionalidades JavaScript e a interface responsiva.
Recomendação: Hugo é a melhor escolha para migração do Jekyll, oferecendo o melhor custo-benefício entre simplicidade, performance e compatibilidade.
Este guia foi criado para ajudar na migração de sites Jekyll para Hugo, mantendo todas as funcionalidades e melhorando a performance.