Criar site no Hugo é algo extremamente rápido e fácil, com poucos comando você consegue criar toda um base para seu site com um código fonte bem leve e totalmente preparado para SEO.
Pré-requisitos:
- Hugo
- Git
Presumindo que você já tenha o Hugo instalado no seu sistema operacional, caso não tenha, veja o tutorial abaixo para instalação no Windows ou linux Ubuntu.
https://tiagoscosta.com.br/posts/hugo-framework-instalação-no-windows
https://tiagoscosta.com.br/posts/hugo-framework-instalação-no-ubuntu
Criando o site Link para o cabeçalho
Observação: Se estiver usando Windows, não use o CMD ou PowerShell, use o Git Bash, pois assim você não terá problema de enconding de arquivo (caracteres estranho).
Escolha algum diretório do seu SO para criar seu site e no terminal execute os comandos abaixo:
# O comando abaixo cria um novo site
# estou criando como "first-site", mas você pode dar qualquer nome
hugo new site first-site
# Entre no diretório do projeto
cd first-site
# Cria um repositório do git, pois puxaremos o tema do git
git init
# Puxa e instala o tema no seu projeto. Usaremos o tema "Ananke"
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
# Esse comando define o tema instalado como o padrão no arquivo
# de configuração que se chama "hugo.toml"
echo "theme = 'ananke'" >> hugo.toml
# Inicie o servidor de desenvolvimento para visualizar o site
hugo server
Acesse seu site através do endereço:
Para parar o servidor pressione as teclas CTRL + C
O comando “hugo server” compila o site, criando todo o site estático no diretório public
e já serve através do servidor desenvolvimento.
Estrutura de pastas Link para o cabeçalho
first-site/
├── archetypes/
├── assets/
├── content/
├── data/
├── i18n/
├── layouts/
├── public/ <-- aparece quando o site é compilado
├── resources/
├── static/
├── themes/
└── hugo.toml <-- configuração do site
-
archetypes Link para o cabeçalho
Local onde é definido os modelos com front matter e markdown que serão utilizados na criação do site.
Todo tema já possui seu modelo default, caso necessário, você pode sobrepor esse modelo criando seus arquivos personalizados aqui.
-
assets Link para o cabeçalho
Local onde você pode definir recursos utilizados pelo site como: imagens, css, sass, javascript e typescript, por exemplo.
Muitas vezes os temas já possuem seus arquivos default, mas aqui você pode personalizar e sobrepor esses arquivos.
-
content Link para o cabeçalho
Local que armazena as páginas que você cria, a maior parte do conteúdo do site residirá aqui.
-
data Link para o cabeçalho
Local que pode armazenar arquivos (csv, json, toml, yaml e xml) que podem ser usados para injetar conteúdo dinâmico no site
-
i18n Link para o cabeçalho
Nesse local você consegue configurar e traduzir seu site para o idioma que você deseja, tornando seu site multilíngue.
-
layouts Link para o cabeçalho
Local onde é definido o layout html ou parte dele que será utilizado no seu site.
Todo tema já possui sua configuração default de layout com diversos arquivos, caso necessário, você pode sobrepor o layout criando os arquivos personalizados aqui.
-
public Link para o cabeçalho
Essa pasta só aparece após a compilação do site através dos comandos
hugo
ouhugo server
.Nela é armazenada o site em si que pode ser armazenado em qualquer provedor de hospedagem.
-
resources Link para o cabeçalho
Essa pasta só aparece quando você compila o site através dos comandos
hugo
ouhugo server
.Nela é armazenado o cache no momento da compilação do site.
-
static Link para o cabeçalho
Usada para armazenar arquivos estáticos que serão utilizados no site como: favicon.icon, imagens que serão utilizados em algum lugar do layout, robots.txt, entre outros.
-
theme Link para o cabeçalho
Diretório onde fica instalado os temas.
-
hugo.toml Link para o cabeçalho
Principal arquivo de configuração do framework, inclusive é nele que definimos qual tema será utilizado.
Mais informações sobre estrutura de diretórios:
https://gohugo.io/getting-started/directory-structure/
Adicionando uma nova página Link para o cabeçalho
# Para criar uma nova página, execute o comando
hugo new content content/posts/my-first-post.md
Isso vai gerar um arquivo my-first-post.md no diretório content/posts
.
Abra o arquivo no seu editor de código e veja que ele possui os seguintes metadados:
+++
title = 'My First Post'
date = 2024-01-14T07:07:07+01:00
draft = true
+++
title = Título da página
data = Data de publicação (Se você botar uma data futura, só vai aparecer quando a data chegar)
draft = Se estiver true
é rascunho e por padrão rascunho não é exibido. Para exibir publicação defina false
.
Como rascunho não é exibido, localmente queremos visualiza-lo, para isso execute:
# Sobe o servidor de desenvolvimento exibindo inclusive os rascunhos
hugo server -D ou hugo server --buildDrafts
Acesse o site novamente
Você já verá a página que acabou de criar:
Compilar o site para publicação Link para o cabeçalho
Quando você compila o site, ele é todo gerado no diretório public
, mas sem as páginas de rascunhos ou com datas futuras.
# Para compilar, execute
hugo
Configure o site Link para o cabeçalho
Na pasta raiz existe um arquivo chamado hugo.toml
.
baseURL = 'https://example.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
theme = 'ananke'
Nele você definir diversas coisas no seu site como:
-
baseURL
Defina a URL de produção incluindo o protocolo e terminando com barra, ex.:
htttps://exemplo.com/
-
Idioma padrão
Defina
pt-br
-
título do seu site
Coloque um título condizente com a proposta do seu site
-
tema utilizado
Teste alguns temas e defina o que você mais gostar ou te atender melhor
Essas são algumas e existem outras diversas configurações para personalizar seu site, muitas delas podem variar de acordo com cada tema, pois cada um tem suas particularidades.
Agora é só hospedar seu site em algum provedor!
Segue abaixo algumas sugestões de provedores para hospedar seu site:
-
Firebase
-
Netlify
-
Vercel
-
Github pages
-
Cloudflare pages
-
Aws amplify
-
Supabase
-
Appwrite
Agora você já pode facilmente criar e manter seu blog ou site com esse framework poderoso 🙂!
Em breve abordarei mais recursos sobre o assunto.
Comandos úteis
# COMANDOS HUGO
# Compila o site, o resultado fica diponível na pasta public
hugo
# Sobe o site localmente sem exibir postagens de rascunhos (padrão do Hugo)
hugo server
# Sobe o site localmente exibindo postagens de rascunhos
hugo server -D
# Sobe o site localmente deixando-o acesssível de qualquer dispositivo na rede
# Bom para acessar de outra máquina ou visualizar no celular
hugo server --bind 0.0.0.0 --baseURL http://0.0.0.0 --port 1313 -D
Ou
hugo server --bind=0.0.0.0 --baseURL=http://0.0.0.0:1313 -D
# Cria uma nova postagem
hugo new content content/posts/my-first-post.md
# Listar comandos
hugo -h
# Mais detalhes dos comandos na documentação oficial
https://gohugo.io/commands
Código fonte desse tutorial
https://github.com/tiagotsc/hugo-first-site
Links úteis
Documentação oficial do Hugo
https://gohugo.io/documentation/
Funções presentes no Hugo
https://gohugo.io/quick-reference/functions/
Variáveis disponíveis no Hugo
https://gohugobrasil.netlify.app/variables/
Métodos disponíveis no Hugo