{"id":44867,"date":"2021-11-29T04:44:33","date_gmt":"2021-11-29T07:44:33","guid":{"rendered":"https:\/\/kinqsta.com\/pt\/?p=44867&#038;preview=true&#038;preview_id=44867"},"modified":"2023-10-18T08:03:59","modified_gmt":"2023-10-18T11:03:59","slug":"site-estatico-hugo","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/","title":{"rendered":"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo"},"content":{"rendered":"<p>Hugo \u00e9 um gerador de sites est\u00e1tico (SSG) escrito em <a href=\"https:\/\/kinqsta.com\/pt\/blog\/melhor-linguagem-de-programacao\/#go\">Go<\/a> (aka Golang), uma linguagem de programa\u00e7\u00e3o compilada de alto desempenho frequentemente usada para desenvolver aplicativos e servi\u00e7os backend.<\/p>\n<p>Hoje, Hugo \u00e9 capaz de gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Isso explica por que Hugo fatura a si mesmo como &#8220;a estrutura mais r\u00e1pida do mundo para construir sites&#8221;<\/p>\n<p>Neste artigo, vamos dar uma olhada na hist\u00f3ria do Hugo, o que o torna t\u00e3o r\u00e1pido, e como voc\u00ea pode come\u00e7ar a construir seu pr\u00f3prio site est\u00e1tico com o Hugo.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>O que \u00e9 Hugo? E por que ele \u00e9 popular?<\/h2>\n<figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" style=\"width: 1001px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/10\/hugo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-105526 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/10\/hugo.png\" alt=\"P\u00e1gina inicial do site do Hugo\" width=\"1001\" height=\"471\"><\/a><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">P\u00e1gina inicial do site Hugo<\/figcaption><\/figure>\n<p>Steve Francia desenvolveu originalmente o <a href=\"https:\/\/gohugo.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">gerador est\u00e1tico Hugo<\/a> em 2013, e Bj\u00f8rn Erik Pedersen assumiu a lideran\u00e7a do projeto em 2015. Hugo \u00e9 um projeto open-source, o que significa que seu c\u00f3digo pode ser visto e melhorado por qualquer pessoa.<\/p>\n<p>Como um gerador de sites est\u00e1tico, Hugo pega arquivos content Markdown, os executa atrav\u00e9s de templates de temas e gera <a href=\"https:\/\/kinqsta.com\/pt\/blog\/wordpress-vs-html-estatico\/\">arquivos HTML<\/a> que voc\u00ea pode facilmente distribuir online. E faz tudo isso extremamente r\u00e1pido.<\/p>\n<p>Em 2021, h\u00e1 dezenas, se n\u00e3o centenas, de geradores est\u00e1ticos. <a href=\"https:\/\/kinqsta.com\/pt\/blog\/geradores-de-site-estatico\/\">Todo gerador de site est\u00e1tico tem seu apelo<\/a>. <a href=\"https:\/\/kinqsta.com\/pt\/blog\/jekyll-site-estatico\/\">Jekyll<\/a> \u00e9 popular entre os desenvolvedores Ruby, e embora n\u00e3o seja t\u00e3o r\u00e1pido quanto outras op\u00e7\u00f5es, foi um dos primeiros geradores de sites est\u00e1ticos a ver a ado\u00e7\u00e3o generalizada. <a href=\"https:\/\/kinqsta.com\/pt\/blog\/gatsby-e-wordpress\/\">Gatsby<\/a> \u00e9 outro SSG popular que \u00e9 bem adequado para o desenvolvimento de sites estaticamente implant\u00e1veis que s\u00e3o din\u00e2micos em funcionalidade.<\/p>\n<p>Ent\u00e3o, com tantos SSGs por a\u00ed, o que faz Hugo se destacar?<\/p>\n\n<h3>Hugo \u00e9 r\u00e1pido<\/h3>\n<p>Em termos de desempenho bruto, Hugo \u00e9 o melhor gerador de site est\u00e1tico do mundo. Comparado com Jekyll, Hugo mostrou ser <a href=\"https:\/\/forestry.io\/blog\/hugo-and-jekyll-compared\/\" target=\"_blank\" rel=\"noopener noreferrer\">35x mais r\u00e1pido<\/a> pelo Forestry. Similarmente, Hugo pode render um site de 10.000 p\u00e1ginas em 10 segundos, uma tarefa que levaria mais de meia hora para ser completada por Gatsby. Hugo n\u00e3o s\u00f3 \u00e9 o SSG mais r\u00e1pido em termos de tempo de constru\u00e7\u00e3o, como tamb\u00e9m \u00e9 r\u00e1pido de instalar.<\/p>\n<p>Hugo embarca como um execut\u00e1vel independente, ao contr\u00e1rio de Jekyll, Gatsby, e outros SSGs que requerem a instala\u00e7\u00e3o de depend\u00eancias com um gerenciador de pacotes. Isto significa que voc\u00ea pode baixar e usar Hugo imediatamente sem ter que se preocupar com as depend\u00eancias de software.<\/p>\n<h3>A modelagem \u00e9 mais f\u00e1cil com Hugo<\/h3>\n<p>Na linguagem SSG, &#8220;templating&#8221; refere-se ao processo de adi\u00e7\u00e3o de placeholders para inser\u00e7\u00e3o din\u00e2mica de conte\u00fado dentro de uma p\u00e1gina HTML. Para acessar o t\u00edtulo de uma p\u00e1gina, voc\u00ea pode usar a vari\u00e1vel <code>{{ .Title }}<\/code>. Assim, dentro de um template HTML Hugo, \u00e9 comum ver o <code>{{ .Title }}<\/code> embrulhado em tags H1 como tal:<\/p>\n<pre><code class=\"language-md\">&lt;h1&gt;{{ .Title }}&lt;\/h1&gt;<\/code><\/pre>\n<p>No momento da constru\u00e7\u00e3o, Hugo pegar\u00e1 automaticamente o t\u00edtulo dentro de um arquivo content e inserir\u00e1 o t\u00edtulo entre as duas tags <code>&lt;h1&gt;<\/code>. Hugo tem uma variedade de vari\u00e1veis de modelos embutidas, e voc\u00ea pode at\u00e9 mesmo escrever fun\u00e7\u00f5es personalizadas para processar dados em tempo de compila\u00e7\u00e3o. Para templates, Hugo usa as bibliotecas incorporadas <code>html\/template<\/code> e <code>text\/template<\/code>. Isto ajuda a reduzir o incha\u00e7o dos aplicativos porque Hugo n\u00e3o precisa instalar bibliotecas de terceiros para a cria\u00e7\u00e3o de templates.<\/p>\n<h2>Como instalar Hugo<\/h2>\n<p>Hugo embarca como um execut\u00e1vel compilado, o que significa que voc\u00ea n\u00e3o ter\u00e1 que baixar e gerenciar muitas depend\u00eancias apenas para come\u00e7ar. Ele est\u00e1 dispon\u00edvel para MacOS, Windows e Linux.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>As instru\u00e7\u00f5es de instala\u00e7\u00e3o abaixo requerem um gerenciador de pacotes, que ir\u00e1 baixar o execut\u00e1vel Hugo para voc\u00ea. Se voc\u00ea preferir construir Hugo a partir do seu c\u00f3digo fonte, por favor, consulte a <a href=\"https:\/\/gohugo.io\/getting-started\/installing\/#source\" target=\"_blank\" rel=\"noopener noreferrer\">documenta\u00e7\u00e3o oficial do Hugo<\/a>.<\/p>\n<\/aside>\n\n<h3>Como instalar Hugo no MacOS e Linux<\/h3>\n<p>O m\u00e9todo de instala\u00e7\u00e3o recomendado para MacOS e Linux requer o Homebrew, um gerenciador de pacotes para instala\u00e7\u00e3o e atualiza\u00e7\u00e3o de aplicativos. Se voc\u00ea ainda n\u00e3o tiver o Homebrew instalado, voc\u00ea pode instal\u00e1-lo executando o comando abaixo no <a href=\"https:\/\/kinqsta.com\/pt\/blog\/comandos-ssh\/\">Terminal<\/a>:<\/p>\n<pre><code class=\"language-bash\">\/bin\/bash -c \"$(curl -fsSL <a href=\"https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh\">https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh<\/a>)\"<\/code><\/pre>\n<p>Ap\u00f3s Homebrew ter sido instalado, execute o comando abaixo para instalar Hugo:<\/p>\n<pre><code class=\"language-bash\">brew install hugo<\/code><\/pre>\n<h3>Como instalar Hugo no Windows<\/h3>\n<p>Para usu\u00e1rios do Windows, Hugo pode ser instalado usando os gerentes de pacotes Chocolatey ou Scoop. Como as instru\u00e7\u00f5es de instala\u00e7\u00e3o do Chocolatey e Scoop s\u00e3o um pouco mais complexas que as do Homebrew, n\u00f3s recomendamos consultar as p\u00e1ginas oficiais de documenta\u00e7\u00e3o deles <a href=\"https:\/\/chocolatey.org\/install\" target=\"_blank\" rel=\"noopener noreferrer\">aqui<\/a> e <a href=\"https:\/\/scoop.sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">aqui<\/a>.<\/p>\n<p>Depois de instalar Chocolatey ou Scoop, voc\u00ea pode instalar Hugo usando um dos seguintes comandos (dependendo do seu gerenciador de pacotes):<\/p>\n<pre><code class=\"language-bash\">choco install hugo-extended -confirm<\/code><\/pre>\n<pre><code class=\"language-bash\">scoop install hugo-extended<\/code><\/pre>\n<h3>Como verificar se Hugo est\u00e1 instalado corretamente<\/h3>\n<p>Para verificar se Hugo foi corretamente instalado, execute o seguinte comando:<\/p>\n<pre><code class=\"language-bash\">hugo version<\/code><\/pre>\n<p>Este comando Terminal deve emitir informa\u00e7\u00f5es sobre a vers\u00e3o atualmente instalada do Hugo dessa forma:<\/p>\n<pre><code class=\"language-bash\">hugo v0.85.0+extended darwin\/arm64 BuildDate=unknown<\/code><\/pre>\n<h2>Comandos e configura\u00e7\u00e3o do Hugo<\/h2>\n<p>Antes de mergulharmos na cria\u00e7\u00e3o de um site est\u00e1tico com Hugo, vamos nos familiarizar com seus v\u00e1rios comandos <a href=\"https:\/\/kinqsta.com\/pt\/blog\/wp-cli-v2\/\">CLI<\/a> e par\u00e2metros do arquivo de configura\u00e7\u00e3o.<\/p>\n<h3>Comandos do Hugo CLI<\/h3>\n<ul>\n<li><code>hugo check<\/code> &#8211; executa v\u00e1rias verifica\u00e7\u00f5es<\/li>\n<li><code>hugo config<\/code> &#8211; mostra a configura\u00e7\u00e3o para um site Hugo<\/li>\n<li><code>hugo convert<\/code> &#8211; converte conte\u00fado para diferentes formatos<\/li>\n<li><code>hugo deploy<\/code> &#8211; implanta seu site para um provedor de nuvens<\/li>\n<li><code>hugo env<\/code> &#8211; exibe a vers\u00e3o Hugo e informa\u00e7\u00f5es do ambiente<\/li>\n<li><code>hugo gen<\/code> &#8211; fornece acesso a v\u00e1rios geradores<\/li>\n<li><code>hugo help<\/code> &#8211; exibe informa\u00e7\u00f5es sobre um comando<\/li>\n<li><code>hugo import<\/code> &#8211; permite que voc\u00ea importe um site de outro local<\/li>\n<li><code>hugo list<\/code> &#8211; exibe uma lista de v\u00e1rios tipos de conte\u00fado<\/li>\n<li><code>hugo mod<\/code> &#8211; fornece acesso a v\u00e1rios ajudantes de m\u00f3dulo<\/li>\n<li><code>hugo new<\/code> &#8211; permite criar novos conte\u00fados para o seu site<\/li>\n<li><code>hugo server<\/code> &#8211; inicia um servidor de desenvolvimento local<\/li>\n<li><code>hugo version<\/code> &#8211; mostra a vers\u00e3o atual do Hugo<\/li>\n<\/ul>\n<p>O Hugo CLI tamb\u00e9m tem uma variedade de bandeiras para especificar op\u00e7\u00f5es adicionais para alguns comandos. Para ver uma lista completa de bandeiras Hugo (h\u00e1 muitas delas), n\u00f3s recomendamos usar o comando <code>hugo help<\/code> para exibir uma lista de todas as bandeiras dispon\u00edveis.<\/p>\n<h3>O arquivo de configura\u00e7\u00e3o do Hugo<\/h3>\n<p>O arquivo de configura\u00e7\u00e3o do Hugo suporta tr\u00eas formatos: YAML, TOML, e JSON. Da mesma forma, o arquivo de configura\u00e7\u00e3o do Hugo \u00e9 <strong>config.yml<\/strong>, <strong>config.toml<\/strong>, ou <strong>config.json<\/strong>, e voc\u00ea pode encontr\u00e1-lo no diret\u00f3rio raiz de um projeto Hugo.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/hugo-configuration-file.jpg\" alt=\"Arquivo de configura\u00e7\u00e3o Hugo\" width=\"1500\" height=\"677\"><figcaption class=\"wp-caption-text\">Arquivo de configura\u00e7\u00e3o Hugo<\/figcaption><\/figure>\n<p>Aqui est\u00e1 como \u00e9 um t\u00edpico arquivo de configura\u00e7\u00e3o Hugo em formato YAML:<\/p>\n<pre><code class=\"language-md\">DefaultContentLanguage: en\n\ntheme:\n\n- kinsta-static-site\n\ncontentdir: content\n\nlayoutdir: layouts\n\npublishdir: public\n\npaginate: 5\n\ntitle: Kinsta Static Site\n\ndescription: \"This is a static site generated with Hugo!\"\n\npermalinks:\n\npost: :slug\/\n\npage: :slug\/\n\ntags: \"tag\/:slug\/\"\n\nauthor: \"author\/:slug\/\"<\/code><\/pre>\n<p>Se voc\u00ea j\u00e1 usou <a href=\"https:\/\/kinqsta.com\/pt\/blog\/softwares-cms\/\">WordPress ou outro CMS<\/a> antes, algumas das op\u00e7\u00f5es de configura\u00e7\u00e3o podem parecer familiares para voc\u00ea. Por exemplo, <code>kinsta-static-site<\/code> \u00e9 o nome do tema do site, <code>Kinsta Static Site<\/code> \u00e9 o meta title SEO, e <code>paginate<\/code> (o n\u00famero de posts por p\u00e1gina) \u00e9 <code>5<\/code>.<\/p>\n<p>Hugo tem dezenas de op\u00e7\u00f5es de configura\u00e7\u00e3o, todas as quais voc\u00ea pode explorar na <a href=\"https:\/\/gohugo.io\/getting-started\/configuration\/\" target=\"_blank\" rel=\"noopener noreferrer\">documenta\u00e7\u00e3o oficial do Hugo<\/a>. Se voc\u00ea precisar fazer qualquer mudan\u00e7a na configura\u00e7\u00e3o global enquanto desenvolve um site Hugo, \u00e9 prov\u00e1vel que voc\u00ea precise editar este arquivo de configura\u00e7\u00e3o.<\/p>\n<h2>Como criar um site Hugo<\/h2>\n<p>Agora que n\u00f3s passamos por como instalar e usar o Hugo CLI e as bases do arquivo de configura\u00e7\u00e3o do Hugo, vamos criar um novo site Hugo.<\/p>\n<p>Para criar um site Hugo, use o comando abaixo (sinta-se livre para mudar <strong>my-hugo-site<\/strong>\u00a0para outra coisa, se voc\u00ea quiser):<\/p>\n<pre><code class=\"language-bash\">hugo new site my-hugo-site<\/code><\/pre>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/hugo-new-site-command.jpg\" alt=\"Criar um novo site Hugo\" width=\"2048\" height=\"1450\"><figcaption class=\"wp-caption-text\">Criar um novo site Hugo<\/figcaption><\/figure>\n<p>A seguir, navegue at\u00e9 a pasta do site, e voc\u00ea deve ver os seguintes arquivos e pastas: arquivo <strong>config.toml<\/strong>, pasta <strong>archetypes<\/strong>, pasta <strong>content<\/strong>, pasta <strong>layouts<\/strong>, pasta <strong>themes<\/strong>, pasta <strong>data<\/strong> e pasta <strong>static<\/strong>. Vamos rever rapidamente o que \u00e9 cada um desses arquivos e pastas.<\/p>\n<h3>O arquivo config.toml do Hugo<\/h3>\n<p>Como destacamos acima, o arquivo prim\u00e1rio de configura\u00e7\u00e3o do Hugo cont\u00e9m configura\u00e7\u00f5es globais para o seu site.<\/p>\n<h3>Pasta archetypes do Hugo<\/h3>\n<p>A pasta <strong>archetypes<\/strong> \u00e9 onde voc\u00ea armazena os modelos content formatados em Markdown. Os archetypes s\u00e3o especialmente \u00fateis se o seu site tem m\u00faltiplos formatos de conte\u00fado. Com os archetypes Hugo, voc\u00ea pode criar um modelo para cada tipo de conte\u00fado em seu site. Isto permite que voc\u00ea pr\u00e9-popule os arquivos Markdown gerados com todas as configura\u00e7\u00f5es necess\u00e1rias.<\/p>\n<p>Por exemplo, se voc\u00ea tem um tipo de conte\u00fado <a href=\"https:\/\/kinqsta.com\/pt\/blog\/o-que-e-um-podcast\/\">podcast<\/a> para exibir seus epis\u00f3dios de podcast, voc\u00ea pode criar um novo archetype em <code>archetypes\/podcast.md<\/code> com o conte\u00fado abaixo:<\/p>\n<pre><code class=\"language-md\">---\n\ntitle: \"{{ replace .Name \"-\" \" \" | title }}\"\n\ndate: {{ .Date }}\n\ndescription: \"\"\n\nseason:\n\nepisode:\n\ndraft: true\n\n---<\/code><\/pre>\n<p>Com este archetype de podcast, voc\u00ea pode ent\u00e3o usar o comando abaixo para criar um novo post:<\/p>\n<pre><code class=\"language-bash\">hugo new podcast\/s1e6_interview-with-kinsta-ceo.md<\/code><\/pre>\n<p>Agora, se voc\u00ea abrir o post rec\u00e9m-criado, voc\u00ea deve ver isto:<\/p>\n<pre><code class=\"language-md\">---\n\ntitle: \"Interview with Kinsta CEO\"\n\ndate: 2021-05-20T13:00:00+09:00\n\ndescription: \"\"\n\nSeason: 1\n\nepisode: 6\n\ndraft: true\n\n---<\/code><\/pre>\n<p>Sem archetypes, voc\u00ea teria que especificar manualmente os par\u00e2metros do front matter para cada novo post que voc\u00ea criar. Embora os archetypes possam parecer complexos e desnecess\u00e1rios no in\u00edcio, eles podem acabar economizando muito tempo no longo prazo.<\/p>\n<h3>Pasta content do Hugo<\/h3>\n<p>A pasta de <strong>content<\/strong> \u00e9 para onde vai o conte\u00fado real do seu post. Hugo suporta tanto <a href=\"https:\/\/kinqsta.com\/pt\/blog\/editores-markdown\/\">os formatos Markdown quanto HTML<\/a>, sendo Markdown a op\u00e7\u00e3o mais popular devido \u00e0 sua facilidade de uso. Al\u00e9m de ser o espa\u00e7o de armazenamento geral para posts, voc\u00ea pode usar a pasta <strong>content<\/strong>\u00a0para organizar melhor o conte\u00fado dos posts.<\/p>\n<p>Hugo trata cada diret\u00f3rio de n\u00edvel superior na pasta <strong>content<\/strong> como uma se\u00e7\u00e3o de conte\u00fado. As se\u00e7\u00f5es content no Hugo s\u00e3o similares aos <a href=\"https:\/\/kinqsta.com\/pt\/blog\/tipos-publicacoes-personalizadas-wordpress\/\">tipos de posts personalizados no WordPress<\/a>. Por exemplo, se seu site tem posts, p\u00e1ginas e podcasts, sua pasta content teria <strong>posts<\/strong>, <strong>p\u00e1ginas<\/strong> e diret\u00f3rios de <strong>podcasts<\/strong> onde arquivos conte\u00fado para estes diferentes tipos de posts viveriam.<\/p>\n<h3>Pasta layouts do Hugo<\/h3>\n<p>A pasta <strong>layouts<\/strong> cont\u00e9m arquivos HTML que definem a estrutura do seu site. Em alguns casos, voc\u00ea pode ver um site Hugo sem uma pasta <strong>layouts<\/strong> porque ele n\u00e3o tem que estar no diret\u00f3rio raiz do projeto e pode residir dentro de uma pasta themes.<\/p>\n<p>Similar aos temas do WordPress que usam PHP para templates, os templates Hugo consistem de HTML base com templates din\u00e2micos adicionais alimentados pelas bibliotecas incorporadas do Golang <code>html\/template<\/code> e <code>text\/template<\/code>. Os v\u00e1rios arquivos de templates HTML necess\u00e1rios para gerar a marca\u00e7\u00e3o HTML do seu site est\u00e3o na pasta de <strong>layouts<\/strong>.<\/p>\n<h3>Pasta themes do Hugo<\/h3>\n<p>Para sites que preferem uma forma mais auto-contida de armazenar arquivos de modelos e ativos, Hugo suporta uma pasta <strong>themes<\/strong>. Os themes do Hugo s\u00e3o similares aos <a href=\"https:\/\/kinqsta.com\/pt\/blog\/que-e-u-tema-wordpress\/\">temas do WordPress<\/a>, pois eles s\u00e3o armazenados em um diret\u00f3rio de temas e cont\u00eam todos os templates necess\u00e1rios para um tema funcionar.<\/p>\n<p>Enquanto alguns usu\u00e1rios Hugo preferem manter arquivos relacionados a temas no diret\u00f3rio raiz do projeto, armazenar esses arquivos dentro da pasta <strong>themes<\/strong> permite um gerenciamento e compartilhamento mais f\u00e1cil.<\/p>\n<h3>Pasta data do Hugo<\/h3>\n<p>A pasta <strong>data<\/strong> do Hugo \u00e9 onde voc\u00ea pode armazenar dados suplementares (em formato JSON, YAML ou TOML) que s\u00e3o necess\u00e1rios para gerar as p\u00e1ginas do seu site. Os arquivos data s\u00e3o ben\u00e9ficos para conjuntos de dados maiores que podem ser inc\u00f4modos de armazenar diretamente em um arquivo content ou modelo.<\/p>\n<p>Por exemplo, se voc\u00ea quisesse criar uma lista de taxas de infla\u00e7\u00e3o em USD de 1960 a 2020, seriam necess\u00e1rias cerca de 80 linhas para representar os dados (uma linha para cada ano). Ao inv\u00e9s de colocar estes dados diretamente em um arquivo content ou modelo, voc\u00ea pode cri\u00e1-los na pasta <strong>data<\/strong> e preench\u00ea-los com as informa\u00e7\u00f5es necess\u00e1rias.<\/p>\n<h3>Pasta static do Hugo<\/h3>\n<p>A pasta <strong>static<\/strong> do Hugo \u00e9 onde voc\u00ea armazena os ativos est\u00e1ticos que n\u00e3o requerem nenhum processamento adicional. A pasta <strong>static<\/strong> \u00e9 normalmente onde os usu\u00e1rios do Hugo armazenam imagens, <a href=\"https:\/\/kinqsta.com\/pt\/blog\/fontes-seguras-na-web\/\">fontes<\/a>, arquivos de verifica\u00e7\u00e3o DNS, e muito mais. Quando um site Hugo \u00e9 gerado e salvo em uma pasta para f\u00e1cil implanta\u00e7\u00e3o, todos os arquivos na pasta <strong>static<\/strong> s\u00e3o copiados como est\u00e3o.<\/p>\n<p>Se voc\u00ea est\u00e1 se perguntando porque n\u00e3o mencionamos arquivos JavaScript ou CSS, \u00e9 porque eles s\u00e3o freq\u00fcentemente processados dinamicamente atrav\u00e9s de pipelines durante o desenvolvimento do site. No Hugo, os arquivos JavaScript e CSS s\u00e3o normalmente armazenados dentro da pasta <strong>themes<\/strong> porque eles requerem processamento adicional.<\/p>\n<h2>Como adicionar um tema a um site Hugo<\/h2>\n<p>Fazer o download e instalar um tema pr\u00e9-fabricado \u00e9 uma \u00f3tima maneira de come\u00e7ar com Hugo. Os temas do Hugo v\u00eam em todos os formatos e tamanhos, e muitos deles est\u00e3o dispon\u00edveis gratuitamente no reposit\u00f3rio oficial de temas do Hugo. Vamos em frente e instalar o popular <a href=\"https:\/\/themes.gohugo.io\/themes\/hyde\/\" target=\"_blank\" rel=\"noopener noreferrer\">tema do Hyde<\/a> em nosso site Hugo.<\/p>\n<p>Primeiro, navegue at\u00e9 a pasta themes do seu projeto no Terminal:<\/p>\n<pre><code class=\"language-bash\">cd &lt;hugo-project-directory&gt;\/themes\/<\/code><\/pre>\n<p>Em seguida, use Git para clonar o tema Hyde no diret\u00f3rio <strong>themes<\/strong> do seu projeto.<\/p>\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/spf13\/hyde.git<\/code><\/pre>\n<p>A seguir, adicione a seguinte linha ao seu arquivo <strong>config.toml<\/strong> para ativar o tema Hyde:<\/p>\n<pre><code class=\"language-md\">theme = \"hyde\"<\/code><\/pre>\n<p>Neste ponto, o tema Hyde \u00e9 instalado e configurado. O pr\u00f3ximo passo \u00e9 iniciar o servidor web de desenvolvimento integrado do Hugo para visualizar o site no seu navegador web.<\/p>\n<h2>Como pr\u00e9-visualizar um site no Hugo<\/h2>\n<p>Hugo \u00e9 enviado com um webserver integrado para fins de desenvolvimento, o que significa que voc\u00ea n\u00e3o precisa instalar um <a href=\"https:\/\/kinqsta.com\/pt\/blog\/nginx-vs-apache\/\">webserver de terceiros como Nginx ou Apache<\/a> apenas para <a href=\"https:\/\/kinqsta.com\/pt\/blog\/instalar-wordpress-localmente\/\">visualizar seu site localmente<\/a>.<\/p>\n<p>Para iniciar o servidor web do Hugo, execute o comando abaixo no diret\u00f3rio raiz do seu projeto:<\/p>\n<pre><code class=\"language-bash\">hugo server -D<\/code><\/pre>\n<p>Hugo construir\u00e1 ent\u00e3o as p\u00e1ginas do seu site e as disponibilizar\u00e1 em <code>http:\/\/localhost:1313\/<\/code>:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0.jpg\" alt=\"Servidor de desenvolvimento local Hugo\" width=\"2048\" height=\"1450\"><figcaption class=\"wp-caption-text\">Servidor de desenvolvimento local Hugo<\/figcaption><\/figure>\n<p>Se voc\u00ea visitar a <a href=\"https:\/\/kinqsta.com\/pt\/blog\/o-que-e-uma-url\/\">URL<\/a> no seu navegador, voc\u00ea deve ver o seu site Hugo com o tema Hyde:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-1.jpg\" alt=\"Hugo site exibindo com o tema Hyde\" width=\"2048\" height=\"1088\"><figcaption class=\"wp-caption-text\">Hugo site exibindo com o tema Hyde<\/figcaption><\/figure>\n<p>Por padr\u00e3o, o servidor de desenvolvimento local do Hugo ir\u00e1 observar as mudan\u00e7as e reconstruir o site automaticamente. Como a velocidade de constru\u00e7\u00e3o do Hugo \u00e9 t\u00e3o r\u00e1pida, as atualiza\u00e7\u00f5es do seu site podem ser vistas em tempo quase real &#8211; algo que \u00e9 raro de se ver no mundo gerador de sites est\u00e1ticos. Para demonstrar isso, vamos criar nosso primeiro post no Hugo.<\/p>\n<h2>Como adicionar conte\u00fado a um site Hugo<\/h2>\n<p>Adicionar conte\u00fado a um site Hugo \u00e9 muito diferente de um CMS completo como WordPress ou Ghost. Com Hugo, n\u00e3o h\u00e1 uma camada de CMS embutida para <a href=\"https:\/\/kinqsta.com\/pt\/topicos\/estrategia-de-conteudo\/\">gerenciar seu conte\u00fado<\/a>. Ao inv\u00e9s disso, espera-se que voc\u00ea gerencie e organize as coisas como voc\u00ea achar melhor.<\/p>\n<p>Em outras palavras, n\u00e3o h\u00e1 uma maneira explicitamente &#8220;correta&#8221; de fazer o gerenciamento de conte\u00fado no Hugo. N\u00f3s vamos compartilhar um m\u00e9todo de adicionar e gerenciar conte\u00fado nesta se\u00e7\u00e3o, mas sinta-se livre para mudar as coisas \u00e0 medida que voc\u00ea se familiarizar mais com Hugo.<\/p>\n<h3>Se\u00e7\u00f5es content no Hugo<\/h3>\n<p>No Hugo, a primeira ferramenta de organiza\u00e7\u00e3o de conte\u00fado que voc\u00ea tem \u00e0 sua disposi\u00e7\u00e3o \u00e9 a se\u00e7\u00e3o <strong>content<\/strong>. Uma se\u00e7\u00e3o de conte\u00fado no Hugo \u00e9 similar a um <a href=\"https:\/\/kinqsta.com\/pt\/blog\/tipos-publicacoes-personalizadas-wordpress\/\">tipo de post no WordPress<\/a> &#8211; n\u00e3o apenas voc\u00ea pode us\u00e1-la como um filtro de conte\u00fado, mas voc\u00ea tamb\u00e9m pode us\u00e1-la como um identificador ao criar temas personalizados.<\/p>\n<p>Por exemplo, se voc\u00ea tiver uma pasta de se\u00e7\u00e3o de conte\u00fado do <strong>blog<\/strong>, voc\u00ea pode us\u00e1-la para armazenar todos os seus posts no blog e renderizar um modelo de p\u00e1gina espec\u00edfico que se aplica apenas aos posts do blog.<\/p>\n<h3>Como adicionar posts no Hugo<\/h3>\n<p>Com isso em mente, vamos criar uma se\u00e7\u00e3o de conte\u00fado para posts em blogs e adicionar alguns peda\u00e7os de conte\u00fado. Crie uma nova pasta chamada <strong>posts<\/strong> na pasta <strong>content<\/strong> do seu projeto &#8211; esta \u00e9 a se\u00e7\u00e3o de conte\u00fado.<\/p>\n<p>Vamos criar outra camada organizacional dentro da pasta <strong>posts<\/strong>, criando uma pasta <strong>2021<\/strong>. Neste ponto, o seu diret\u00f3rio <strong>content<\/strong> deve ser parecido com este:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-2.jpg\" alt=\"Diret\u00f3rio de conte\u00fado Hugo\" width=\"2048\" height=\"898\"><figcaption class=\"wp-caption-text\">Diret\u00f3rio content do Hugo<\/figcaption><\/figure>\n<p>Agora, vamos criar nosso primeiro post. Como discutimos anteriormente, Hugo suporta tanto Markdown quanto arquivos HTML para conte\u00fado. Em geral, \u00e9 melhor ficar com os arquivos Markdown porque eles s\u00e3o mais f\u00e1ceis de escrever, formatar e ler.<\/p>\n<p>Na pasta <strong>content\/posts\/2021<\/strong>, crie um novo arquivo que termina em <code>.md<\/code> (a extens\u00e3o do arquivo Markdown). Voc\u00ea pode nomear o arquivo como voc\u00ea quiser, mas a sintaxe recomendada para nomear um arquivo content do Hugo \u00e9 <strong>YYYY-MM-DD-a-sample-post.md<\/strong>.<\/p>\n<p>Al\u00e9m de criar manualmente um arquivo content, voc\u00ea tamb\u00e9m pode usar o Hugo CLI para criar um novo post com o comando abaixo (certifique-se de executar o comando a partir do diret\u00f3rio do seu projeto):<\/p>\n<pre><code class=\"language-bash\">hugo new posts\/2021\/2021-08-30-a-sample-post.md<\/code><\/pre>\n<p>Observe como a pasta <strong>content<\/strong> est\u00e1 faltando no caminho acima. Isto \u00e9 porque Hugo assume que todos os arquivos de conte\u00fado ir\u00e3o para a pasta <strong>content<\/strong> por padr\u00e3o.<\/p>\n<p>Se voc\u00ea abrir o arquivo content recentemente criado, voc\u00ea deve ver algumas linhas de metadados na parte superior do documento que se parecem com isto:<\/p>\n<pre><code class=\"language-md\">---\n\ntitle: \"2021 08 30 a Sample Post\"\n\ndate: 2021-08-30T13:44:28+09:00\n\ndraft: true\n\n---<\/code><\/pre>\n<p>Este metadados, que \u00e9 formatado em YAML, \u00e9 chamado de &#8220;front matter.&#8221; O front matter auto-gerada \u00e9 um benef\u00edcio significativo do uso do Hugo CLI. O front matter \u00e9 onde os dados \u00fanicos para um post (nome do post, dados, status do rascunho, tags, categorias, etc.) s\u00e3o armazenados. O formato padr\u00e3o para o front matter pode ser configurado por se\u00e7\u00e3o usando <a href=\"https:\/\/gohugo.io\/content-management\/archetypes\/\" target=\"_blank\" rel=\"noopener noreferrer\">archetypes<\/a>.<\/p>\n<p>Agora vamos adicionar algum texto ao post. Ao escrever um post, certifique-se sempre de que seu conte\u00fado esteja abaixo do front matter, assim:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-3.jpg\" alt=\"Blog post em Hugo\" width=\"2048\" height=\"1332\"><figcaption class=\"wp-caption-text\">Blog post no Hugo<\/figcaption><\/figure>\n<p>Assim que voc\u00ea salvar o arquivo content, voc\u00ea deve ver Hugo reconstruir o seu site no Terminal. Na captura da tela abaixo, voc\u00ea pode ver Hugo reconstruir o site inteiro em 22 ms!<\/p>\n<figure style=\"width: 1692px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-4.jpg\" alt=\"Reconstru\u00e7\u00e3o do site Hugo\" width=\"1692\" height=\"914\"><figcaption class=\"wp-caption-text\">Reconstru\u00e7\u00e3o do site Hugo<\/figcaption><\/figure>\n<p>Se voc\u00ea visitar seu site Hugo em seu navegador, voc\u00ea deve ver o novo post.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/hugo-site-with-post.jpg\" alt=\"Hugo site com um post\" width=\"2048\" height=\"1118\"><figcaption class=\"wp-caption-text\">Site Hugo com um post<\/figcaption><\/figure>\n<h3>Como adicionar uma p\u00e1gina no Hugo<\/h3>\n<p>Agora que adicionamos um post ao nosso site Hugo, vamos adicionar uma p\u00e1gina. A maioria dos sistemas de gerenciamento de conte\u00fado, incluindo WordPress, distingue entre postagens e p\u00e1ginas. Tipicamente, um post \u00e9 um conte\u00fado datado, enquanto uma p\u00e1gina consiste de conte\u00fado evergreen ou est\u00e1tico.<\/p>\n<p>Para criar uma p\u00e1gina, n\u00f3s precisamos primeiro de uma se\u00e7\u00e3o content da <strong>p\u00e1gina<\/strong>. Para fazer isso, crie uma pasta chamada <strong>pages<\/strong> na pasta <strong>content<\/strong> do Hugo. Depois disso, use o comando abaixo para adicionar uma nova p\u00e1gina &#8220;Sobre&#8221; ao seu site:<\/p>\n<pre><code class=\"language-bash\">hugo new pages\/about.md<\/code><\/pre>\n<p>Observe como a conven\u00e7\u00e3o de nomenclatura das p\u00e1ginas difere dos posts. Ao contr\u00e1rio dos posts, as p\u00e1ginas n\u00e3o est\u00e3o vinculadas a uma data espec\u00edfica, ent\u00e3o \u00e9 desnecess\u00e1rio incluir a data de cria\u00e7\u00e3o no nome do arquivo.<\/p>\n<p>Agora, vamos adicionar algum texto \u00e0 p\u00e1gina &#8220;Sobre&#8221;:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-5.jpg\" alt=\"Sobre a p\u00e1gina em Hugo\" width=\"2048\" height=\"1104\"><figcaption class=\"wp-caption-text\">Sobre a p\u00e1gina no Hugo<\/figcaption><\/figure>\n<p>Neste ponto, voc\u00ea deve ver a p\u00e1gina Sobre no seu navegador da web:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-6.jpg\" alt=\"Sobre a p\u00e1gina no navegador da web\" width=\"2048\" height=\"1087\"><figcaption class=\"wp-caption-text\">Sobre a p\u00e1gina no navegador da web<\/figcaption><\/figure>\n<p>Agora que temos duas se\u00e7\u00f5es de conte\u00fado &#8211; posts e p\u00e1ginas &#8211; vamos analisar como fazer algumas customiza\u00e7\u00f5es no site, como editar o t\u00edtulo e a descri\u00e7\u00e3o, adicionar a p\u00e1gina Sobre ao menu da barra lateral, alterar o formato dos links permanentes e remover p\u00e1ginas do feed dos posts.<\/p>\n<h3>Como mudar o t\u00edtulo e a descri\u00e7\u00e3o do site<\/h3>\n<p>O m\u00e9todo exato para mudar o t\u00edtulo e a descri\u00e7\u00e3o do site depende da configura\u00e7\u00e3o do seu site e\/ou tema ativo. No caso do tema Hyde, o t\u00edtulo e a descri\u00e7\u00e3o do site podem ser alterados no arquivo de configura\u00e7\u00e3o do Hugo (<strong>config.toml<\/strong>).<\/p>\n<p>N\u00f3s sabemos disso por causa do seguinte c\u00f3digo do tema que torna a barra lateral:<\/p>\n<pre><code class=\"language-md\">&lt;aside class=\"sidebar\"&gt;\n\n&lt;div class=\"container sidebar-sticky\"&gt;\n\n&lt;div class=\"sidebar-about\"&gt;\n\n&lt;a href=\"{{ .Site.BaseURL }}\"&gt;&lt;h1&gt;{{ .Site.Title }}&lt;\/h1&gt;&lt;\/a&gt;\n\n&lt;p class=\"lead\"&gt;\n\n{{ with .Site.Params.description }} {{.}} {{ else }}An elegant open source and mobile first theme for &lt;a href=\"http:\/\/hugo.spf13.com\"&gt;hugo&lt;\/a&gt; made by &lt;a href=\"http:\/\/twitter.com\/mdo\"&gt;@mdo&lt;\/a&gt;. Originally made for Jekyll.{{end}}\n\n&lt;\/p&gt;\n\n&lt;\/div&gt;\n\n&lt;nav&gt;\n\n&lt;ul class=\"sidebar-nav\"&gt;\n\n&lt;li&gt;&lt;a href=\"{{ .Site.BaseURL }}\"&gt;Home&lt;\/a&gt; &lt;\/li&gt;\n\n{{ range .Site.Menus.main -}}\n\n&lt;li&gt;&lt;a href=\"{{.URL}}\"&gt; {{ .Name }} &lt;\/a&gt;&lt;\/li&gt;\n\n{{- end }}\n\n&lt;\/ul&gt;\n\n&lt;\/nav&gt;\n\n&lt;p&gt;{{ with .Site.Params.copyright }}{{.}}{{ else }}&copy; {{ now.Format \"2006\"}}. All rights reserved. {{end}}&lt;\/p&gt;\n\n&lt;\/div&gt;\n\n&lt;\/aside&gt;<\/code><\/pre>\n<p>As duas partes a serem focadas s\u00e3o:<\/p>\n<pre><code class=\"language-md\">{{ .Site.Title }}<\/code><\/pre>\n<p>E..<\/p>\n<pre><code class=\"language-md\">{{ with .Site.Params.description }} {{.}} {{ else }}An elegant open source and mobile first theme for &lt;a href=\"http:\/\/hugo.spf13.com\"&gt;hugo&lt;\/a&gt; made by &lt;a href=\"http:\/\/twitter.com\/mdo\"&gt;@mdo&lt;\/a&gt;. Originally made for Jekyll.{{end}}<\/code><\/pre>\n<p>As Chaves ou chavetas <code>{{ }}<\/code> s\u00e3o parte do motor de modelos do Hugo e permitem a gera\u00e7\u00e3o din\u00e2mica de dados em p\u00e1ginas renderizadas. Como um exemplo, <code>{{ .Site.Title }}<\/code> instrui Hugo a verificar o arquivo <strong>config.toml<\/strong> e buscar o valor mapeado para a chave <strong>Title<\/strong>.<\/p>\n<p>Como a configura\u00e7\u00e3o padr\u00e3o do Hugo usa <strong>My New Hugo Site<\/strong> como o t\u00edtulo do site, \u00e9 isso que a barra lateral mostra. Se mudarmos o t\u00edtulo do site no <strong>config.toml<\/strong> para outra coisa, a mudan\u00e7a tamb\u00e9m refletir\u00e1 no frontend.<\/p>\n<p>Vamos em frente e mudar o par\u00e2metro do t\u00edtulo no <strong>config.toml<\/strong> de <strong>My New Hugo Site<\/strong> para <strong>Kinsta&#8217;s Hugo Site<\/strong>.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/kinstas-hugo-site-title.jpg\" alt=\"Alterando o t\u00edtulo do site em Hugo\" width=\"2048\" height=\"1088\"><figcaption class=\"wp-caption-text\">Alterando o t\u00edtulo do site no Hugo<\/figcaption><\/figure>\n<p>Passando para a descri\u00e7\u00e3o do site, voc\u00ea pode ver que o motor de modelos do Hugo suporta l\u00f3gica condicional. Traduzido para ingl\u00eas simples, o c\u00f3digo abaixo instrui Hugo a verificar se um valor <strong>Params<\/strong> est\u00e1 atribu\u00eddo \u00e0 chave <strong>description<\/strong> no arquivo <strong>config.toml<\/strong>. Se n\u00e3o, aqui est\u00e1 uma string padr\u00e3o a ser usada em seu lugar.<\/p>\n<pre><code class=\"language-md\">{{ with .Site.Params.description }} {{.}} {{ else }} An elegant open source and mobile first theme for &lt;a href=\"http:\/\/hugo.spf13.com\"&gt;hugo&lt;\/a&gt; made by &lt;a href=\"http:\/\/twitter.com\/mdo\"&gt;@mdo&lt;\/a&gt;. Originally made for Jekyll.{{end}}<\/code><\/pre>\n<p>Como n\u00f3s n\u00e3o temos uma descri\u00e7\u00e3o configurada no arquivo <strong>config.toml<\/strong>, Hugo tem como padr\u00e3o renderizar &#8220;Um tema elegante de c\u00f3digo aberto e mobile-first para Hugo feito por @mdo&#8221;. Originalmente feito para Jekyll&#8221;<\/p>\n<p>Agora vamos atualizar nosso arquivo <strong>config.toml<\/strong> de:<\/p>\n<pre><code class=\"language-md\">baseURL = \"http:\/\/example.org\/\"\n\nlanguageCode = \"en-us\"\n\ntitle = \"Kinsta's Hugo Site\"\n\ntheme = \"hyde\"<\/code><\/pre>\n<p>Para:<\/p>\n<pre><code class=\"language-md\">baseURL = \"http:\/\/example.org\/\"\n\nlanguageCode = \"en-us\"\n\ntitle = \"Kinsta's Hugo Site\"\n\ntheme = \"hyde\"\n\n[params]\n\ndescription = \"Kinsta is a premium managed WordPress hosting company.\"<\/code><\/pre>\n<p>Como esperado, as mudan\u00e7as agora tamb\u00e9m s\u00e3o vis\u00edveis no frontend:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-7.jpg\" alt=\"Mude a descri\u00e7\u00e3o do site Hugo\" width=\"2048\" height=\"1086\"><figcaption class=\"wp-caption-text\">Mude a descri\u00e7\u00e3o do site Hugo<\/figcaption><\/figure>\n<h3>Como remover p\u00e1ginas do post feed<\/h3>\n<p>Na maioria dos blogs, \u00e9 comum que o post feed na p\u00e1gina inicial mostre apenas posts. Por padr\u00e3o, o tema Hyde inclui todos os arquivos content no post feed. Para mudar este comportamento, voc\u00ea precisar\u00e1 editar a fun\u00e7\u00e3o <code>range<\/code> no modelo <strong>index.html<\/strong>, que gera a p\u00e1gina inicial.<\/p>\n<p>A fun\u00e7\u00e3o Hugo <code>range<\/code> itera sobre um conjunto definido de itens e depois faz <em style=\"font-size: 1.125rem\">algo<\/em> com os dados. Por padr\u00e3o, o modelo <strong style=\"font-size: 1.125rem\">index.html<\/strong> do tema Hyde varia sobre <strong style=\"font-size: 1.125rem\">.Site.RegularPages<\/strong> e filtra dados como permalink, t\u00edtulo do post e resumo do post antes de renderizar o HTML.<\/p>\n<p>Como <code>.Site.RegularPages<\/code> inclui todas as p\u00e1ginas regulares sobre o Hugo, incluindo tanto posts quanto p\u00e1ginas, a p\u00e1gina &#8220;Sobre&#8221; \u00e9 renderizada. Ao alterar os itens de <code>range<\/code> para <code>.Site.RegularPages \"Section\" \"posts\"<\/code>, n\u00f3s podemos instruir Hugo a filtrar apenas atrav\u00e9s das p\u00e1ginas regulares na se\u00e7\u00e3o <strong>posts<\/strong> &#8211; os arquivos content na pasta <strong>posts<\/strong> que criamos anteriormente.<\/p>\n<p>Vamos fazer essa mudan\u00e7a agora, editando o modelo a partir disso:<\/p>\n<pre><code class=\"language-html\">{{ define \"main\" -}}\n\n&lt;div class=\"posts\"&gt;\n\n{{- range .Site.RegularPages -}}\n\n&lt;article class=\"post\"&gt;\n\n&lt;h1 class=\"post-title\"&gt;\n\n&lt;a href=\"{{ .Permalink }}\"&gt;{{ .Title }}&lt;\/a&gt;\n\n&lt;\/h1&gt;\n\n&lt;time datetime=\"{{ .Date.Format \"2006-01-02T15:04:05Z0700\" }}\" class=\"post-date\"&gt;{{ .Date.Format \"Mon, Jan 2, 2006\" }}&lt;\/time&gt;\n\n{{ .Summary }}\n\n{{ if .Truncated }}\n\n&lt;div class=\"read-more-link\"&gt;\n\n&lt;a href=\"{{ .RelPermalink }}\"&gt;Read More\u2026&lt;\/a&gt;\n\n&lt;\/div&gt;\n\n{{ end }}\n\n&lt;\/article&gt;\n\n{{- end }}\n\n&lt;\/div&gt;\n\n{{- end }}<\/code><\/pre>\n<p>A isto:<\/p>\n<pre><code class=\"language-html\">{{ define \"main\" -}}\n\n&lt;div class=\"posts\"&gt;\n\n{{- range where .Site.RegularPages \"Section\" \"posts\" -}}\n\n&lt;article class=\"post\"&gt;\n\n&lt;h1 class=\"post-title\"&gt;\n\n&lt;a href=\"{{ .Permalink }}\"&gt;{{ .Title }}&lt;\/a&gt;\n\n&lt;\/h1&gt;\n\n&lt;time datetime=\"{{ .Date.Format \"2006-01-02T15:04:05Z0700\" }}\" class=\"post-date\"&gt;{{ .Date.Format \"Mon, Jan 2, 2006\" }}&lt;\/time&gt;\n\n{{ .Summary }}\n\n{{ if .Truncated }}\n\n&lt;div class=\"read-more-link\"&gt;\n\n&lt;a href=\"{{ .RelPermalink }}\"&gt;Read More\u2026&lt;\/a&gt;\n\n&lt;\/div&gt;\n\n{{ end }}\n\n&lt;\/article&gt;\n\n{{- end }}\n\n&lt;\/div&gt;\n\n{{- end }}<\/code><\/pre>\n<p>Depois de fazer esta mudan\u00e7a, a p\u00e1gina inicial s\u00f3 exibir\u00e1 posts como este:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/CleanShot-2021-09-21-at-10.45.16@2x.jpg\" alt=\"Exibir posts somente na p\u00e1gina inicial\" width=\"2048\" height=\"1090\"><figcaption class=\"wp-caption-text\">Exibir posts somente na p\u00e1gina inicial<\/figcaption><\/figure>\n<h3>Como usar as parciais no Hugo<\/h3>\n<p>Uma das caracter\u00edsticas mais poderosas do Hugo s\u00e3o os templates parciais &#8211; templates HTML embutidos em outro template HTML. Parciais permitem a reutiliza\u00e7\u00e3o de c\u00f3digo em diferentes arquivos de template sem gerenciar o c\u00f3digo em cada arquivo.<\/p>\n<p>Por exemplo, \u00e9 comum ver diferentes se\u00e7\u00f5es de p\u00e1gina (cabe\u00e7alho, rodap\u00e9, etc.) em seus arquivos parciais separados, que s\u00e3o ent\u00e3o chamados dentro do arquivo modelo <strong>baseof.html<\/strong> de um tema.<\/p>\n<p>Dentro do arquivo <strong>baseof.html<\/strong> no tema Ananke, voc\u00ea pode ver um exemplo de uma parcial na Linha 18 &#8211; <code>{{ partial \"site-style.html\" . }}<\/code>.<\/p>\n<p>Neste caso, <code>{{ partial \"site-style.html\" . }}<\/code> instrui Hugo a substituir o conte\u00fado da Linha 18 pelo <strong>site-style.html<\/strong> na pasta <strong>\/layouts\/partials<\/strong>. Se n\u00f3s navegarmos para o <strong>\/partials\/site-style.html<\/strong>, n\u00f3s vemos o <a href=\"https:\/\/github.com\/theNewDynamic\/gohugo-theme-ananke\/blob\/master\/layouts\/partials\/site-style.html\" target=\"_blank\" rel=\"noopener noreferrer\">seguinte c\u00f3digo<\/a>:<\/p>\n<pre><code class=\"language-html\">{{ with partialCached \"func\/style\/GetMainCSS\" \"style\/GetMainCSS\" }}\n\n&lt;link rel=\"stylesheet\" href=\"{{ .RelPermalink }}\" &gt;\n\n{{ end }}\n\n{{ range site.Params.custom_css }}\n\n{{ with partialCached \"func\/style\/GetResource\" . . }}{{ else }}\n\n&lt;link rel=\"stylesheet\" href=\"{{ relURL (.) }}\"&gt;\n\n{{ end }}\n\n{{ end }}<\/code><\/pre>\n<p>Descarregando este c\u00f3digo para um arquivo separado, o arquivo modelo <strong>baseof.html<\/strong> pode permanecer organizado e f\u00e1cil de ler. Embora parciais n\u00e3o sejam necess\u00e1rias, especialmente para projetos b\u00e1sicos, elas v\u00eam a calhar para projetos maiores com funcionalidades mais complexas.<\/p>\n<h3>Como usar c\u00f3digos curtos no Hugo<\/h3>\n<p>Os atalhos Hugo s\u00e3o similares aos parciais, pois permitem a reutiliza\u00e7\u00e3o do c\u00f3digo em uma variedade de p\u00e1ginas. Os atalhos s\u00e3o arquivos HTML que residem na pasta <strong>\/layouts\/shortcodes<\/strong>. A principal diferen\u00e7a \u00e9 que as partiais se aplicam aos templates HTML, enquanto os atalhos se aplicam \u00e0s p\u00e1ginas content Markdown.<\/p>\n<p>No Hugo, <a href=\"https:\/\/kinqsta.com\/pt\/blog\/codigo-curto-wordpress\/\">os atalhos<\/a> permitem que voc\u00ea desenvolva m\u00f3dulos de funcionalidade que voc\u00ea pode usar em p\u00e1ginas do seu site sem gerenciar mudan\u00e7as de c\u00f3digo para cada p\u00e1gina.<\/p>\n<p>Se voc\u00ea tiver um blog, \u00e9 prov\u00e1vel que voc\u00ea tenha que percorrer o conte\u00fado corporal de seus posts para atualizar as refer\u00eancias do ano atual. Dependendo de quantos posts voc\u00ea tem no seu site, esta tarefa pode levar muito tempo!<\/p>\n<p>Ao usar um atalho Hugo em seus arquivos content, voc\u00ea n\u00e3o ter\u00e1 que se preocupar em atualizar as refer\u00eancias do ano nunca mais!<\/p>\n<p>Vamos come\u00e7ar criando um atalho em <strong>\/layouts\/shortcodes\/current_year.html<\/strong> com o conte\u00fado abaixo:<\/p>\n<pre><code class=\"language-md\">{{ now.Format \"2006\" }}<\/code><\/pre>\n<p>Os c\u00f3digos curtos podem ser incorporados nos posts com esta sintaxe &#8211; <code>{{&lt; shortcode_name &gt;}}<\/code>. Em nosso caso, n\u00f3s podemos chamar o atalho <code>current_year.html<\/code> com <code>{{&lt; shortcode_name &gt;}}<\/code> assim:<\/p>\n<pre><code class=\"language-yaml\">---\n\ntitle: \"2021 08 30 a Sample Post\"\n\ndate: 2021-08-30T13:44:28+09:00\n\ndraft: true\n\n---\n\nThis post was created in the year {{&lt; current_year &gt;}}.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur finibus, velit sit amet vulputate scelerisque, massa turpis fringilla nulla, commodo dapibus urna arcu at nunc. Mauris ultrices convallis ipsum eget facilisis. Curabitur ut rutrum sem. Praesent id nibh non enim mollis porta. Nam mollis, quam et vehicula tristique, lorem ante laoreet orci, sit amet congue tortor nibh sit amet leo. Curabitur lobortis neque tempor, vestibulum lacus nec, condimentum arcu. Nulla fringilla leo sit amet ipsum auctor sagittis. Vivamus aliquam iaculis posuere. Pellentesque malesuada neque sit amet consectetur fringilla. Curabitur felis tellus, mattis in dui vel, vestibulum tincidunt metus. Mauris eget elit dui. Etiam risus nulla, ultricies vitae molestie quis, placerat in magna. Proin interdum, orci ac auctor ullamcorper, tellus ex porta tortor, suscipit luctus libero odio quis arcu.\n\nPhasellus dapibus pellentesque ex eget pulvinar. Proin vitae elit risus. Sed justo nulla, pellentesque eu erat eu, luctus bibendum magna. Curabitur at mi id augue egestas condimentum sed quis lectus. Aenean fringilla nisl sed tincidunt tristique. Cras scelerisque laoreet sapien a faucibus. Vivamus a vehicula arcu. Duis rutrum, massa eu tincidunt eleifend, est nulla faucibus nisl, sit amet consectetur neque velit at velit. Integer fermentum augue ut orci iaculis aliquet. Ut in gravida magna.<\/code><\/pre>\n<p>Se voc\u00ea visualizar o post no <a href=\"https:\/\/kinqsta.com\/pt\/participacao-mercado-navegadores-desktop\/\">navegador<\/a>, voc\u00ea deve ver o ano corrente na primeira linha do post assim:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-8.jpg\" alt=\"Use um atalho Hugo para gerar automaticamente o ano corrente\" width=\"2048\" height=\"1087\"><figcaption class=\"wp-caption-text\">Use um atalho Hugo para gerar automaticamente o ano corrente<\/figcaption><\/figure>\n<h3>Como adicionar imagens a um post no Hugo<\/h3>\n<p>Ao contr\u00e1rio do WordPress e outros sistemas completos de gerenciamento de conte\u00fado, Hugo n\u00e3o inclui um sistema de arrastar e soltar para gerenciar imagens. Assim, o projeto de um sistema de gerenciamento de imagens \u00e9 descarregado para o usu\u00e1rio final.<\/p>\n<p>Embora Hugo n\u00e3o tenha uma maneira padronizada de <a href=\"https:\/\/kinqsta.com\/pt\/blog\/otimizar-imagens-para-web\/\">gerenciar imagens<\/a>, um m\u00e9todo popular baseia-se em armazenar imagens na pasta <strong>\/static<\/strong> e referenci\u00e1-las em posts e p\u00e1ginas usando um c\u00f3digo de atalho. Vamos caminhar atrav\u00e9s de como voc\u00ea pode fazer a organiza\u00e7\u00e3o b\u00e1sica de imagens no Hugo.<\/p>\n<p>A primeira coisa que precisamos fazer \u00e9 criar uma estrutura organizacional para nossa biblioteca de imagens. Enquanto isso parece complexo, tudo o que \u00e9 necess\u00e1rio \u00e9 a cria\u00e7\u00e3o de alguns diret\u00f3rios adicionais dentro da pasta <strong>\/static<\/strong>.<\/p>\n<p>Vamos come\u00e7ar criando uma pasta de <strong>uploads<\/strong> em <strong>\/static<\/strong>. Dentro da pasta de <strong>uploads<\/strong>, crie uma pasta chamada <strong>2021<\/strong> para manter todas as imagens carregadas em 2021.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-9.jpg\" alt=\"Gerenciamento de imagens em Hugo\" width=\"2048\" height=\"924\"><figcaption class=\"wp-caption-text\">Gerenciamento de imagens no Hugo<\/figcaption><\/figure>\n<p>A seguir, vamos adicionar duas imagens<strong>(blue1.jpg<\/strong> e <strong>blue2.jpg<\/strong>) na pasta <strong>2021<\/strong>.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-10.jpg\" alt=\"Adicionando imagens \u00e0 pasta \"2021\"\" width=\"2048\" height=\"924\"><figcaption class=\"wp-caption-text\">Adicionando imagens \u00e0 pasta &#8220;2021&#8221;<\/figcaption><\/figure>\n<p>Em HTML, as imagens s\u00e3o exibidas usando a tag <code>&lt;img&gt;<\/code>. Por exemplo, para exibir <strong>blue1.jpg<\/strong>, n\u00f3s podemos usar o HTML abaixo:<\/p>\n<pre><code class=\"language-html\">&lt;img src=\"\/uploads\/2021\/blue1.jpg\" alt=\"Blue is the warmest color!\"&gt;<\/code><\/pre>\n<p>Embora seja poss\u00edvel adicionar este HTML diretamente ao arquivo content Markdown, \u00e9 melhor criar um atalho que voc\u00ea possa usar para exibir qualquer imagem da pasta de uploads. Desta forma, se voc\u00ea precisar atualizar a tag <code>img<\/code>, voc\u00ea pode editar o modelo de c\u00f3digo de atalho sem editar cada inst\u00e2ncia da tag <code>img<\/code>.<\/p>\n<p>Para criar o modelo de atalho, crie um novo arquivo em <strong>\/layouts\/shortcodes\/img.html<\/strong> com o conte\u00fado abaixo:<\/p>\n<pre><code class=\"language-html\">&lt;img src=\"\/uploads\/{{ .Get \"src\" }}\" alt=\"{{ .Get \"alt\" }}<\/code><\/pre>\n<p>A seguir, adicione o atalho abaixo a um post de blog:<\/p>\n<pre><code class=\"language-html\">{{&lt; img src=\"2021\/blue1.jpg\" alt=\"Blue is also the coolest color!\"&gt;}<\/code><\/pre>\n<p>No modelo de atalho, <code>{{ .Get \"src\" }}<\/code> e <code>{{ .Get \"alt\" }}<\/code> instruem Hugo a buscar o conte\u00fado dos par\u00e2metros <code>src&lt;<\/code> e <code>alt&lt;<\/code> ao chamar um atalho.<\/p>\n<p>Agora, se voc\u00ea recarregar o post do blog, voc\u00ea deve ver a imagem dessa forma:<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-11.jpg\" alt=\"Atalho de imagem em Hugo\" width=\"2048\" height=\"1040\"><figcaption class=\"wp-caption-text\">Atalho de imagem no Hugo<\/figcaption><\/figure>\n<h2>Como implantar um site Hugo na Kinsta<\/h2>\n<p>Neste ponto, voc\u00ea aprendeu como instalar o Hugo, criar um site, adicionar um tema, fazer edi\u00e7\u00f5es b\u00e1sicas em arquivos de configura\u00e7\u00e3o e expandir a funcionalidade do seu site com partials e shortcodes. Voc\u00ea agora deve ter um site funcional pronto para ser implantado on-line.<\/p>\n<p>Anteriormente, usamos o comando <code>hugo server -D<\/code> para iniciar um servidor de desenvolvimento local e visualizar as mudan\u00e7as em nosso site em tempo real. Para gerar o site completo, podemos usar o comando <code>hugo<\/code> no diret\u00f3rio raiz do nosso projeto. Ap\u00f3s a gera\u00e7\u00e3o do site estar completa, voc\u00ea ver\u00e1 uma nova pasta chamada <strong>public<\/strong> no diret\u00f3rio do seu projeto. Dentro desta pasta, voc\u00ea encontrar\u00e1 todos os arquivos que precisam ser enviados para um servidor est\u00e1tico.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/09\/pasted-image-0-12.jpg\" alt=\"Criando o seu site Hugo localmente.\" width=\"2048\" height=\"1147\"><figcaption class=\"wp-caption-text\">Criando o seu site Hugo localmente.<\/figcaption><\/figure>\n<p>A melhor op\u00e7\u00e3o para publicar o seu site est\u00e1tico \u00e9 enviar o seu projeto Hugo para um reposit\u00f3rio <a href=\"https:\/\/kinqsta.com\/pt\/topicos\/git\/\">Git<\/a> e vincul\u00e1-lo \u00e0 <a href=\"https:\/\/kinqsta.com\/static-site-hosting\">Hospedagem de Site Est\u00e1tico<\/a> da Kinsta. Atualmente, a Kinsta s\u00f3 consegue croar SSGs baseados em Node.js, mas para SSGs como Hugo, existem duas alternativas:<\/p>\n<ul>\n<li>Instale a depend\u00eancia <a href=\"https:\/\/www.npmjs.com\/package\/hugo-bin\">Hugo bin<\/a><\/li>\n<li><a href=\"https:\/\/kinqsta.com\/pt\/blog\/hugo-stsh-with-circleci\/\">Usar CI\/CD para construir os arquivos est\u00e1ticos e, em seguida, implant\u00e1-los na Kinsta<\/a><\/li>\n<\/ul>\n<p>Para este guia, vamos usar a depend\u00eancia Hugo-bin. Para fazer isso, inicialize o Node.js em seu projeto Hugo executando o comando <code>npm init -y<\/code> no diret\u00f3rio raiz do seu projeto Hugo.<\/p>\n<p>Isso criar\u00e1 um arquivo <strong>package.json<\/strong> b\u00e1sico. Em seguida, instale a depend\u00eancia de desenvolvimento hugo-bin:<\/p>\n<pre><code>npm i -D hugo-bin<\/code><\/pre>\n<p>A seguir, no seu arquivo <strong>package.json<\/strong>, adicione o seguinte comando de script:<\/p>\n<pre class=\"language-json\"><code class=\"language-json\">\"scripts\": {\n    \"build\": \"hugo\",\n    \"create\": \"hugo new\",\n    \"serve\": \"hugo server\"\n  }<\/code><\/pre>\n<p>Agora, voc\u00ea pode enviar seu c\u00f3digo para o seu reposit\u00f3rio Git. Uma vez que o reposit\u00f3rio esteja pronto, siga estas etapas para implantar o seu site est\u00e1tico na Kinsta:<\/p>\n<ol>\n<li>Fa\u00e7a login ou crie uma conta para visualizar o seu painel <a href=\"https:\/\/my.kinqsta.com\/?lang=pt\">MyKinsta<\/a>.<\/li>\n<li>Autorize a Kinsta com o seu provedor Git.<\/li>\n<li>Clique em <strong>Sites Est\u00e1ticos<\/strong> na barra lateral esquerda e depois clique em <strong>Adicionar site<\/strong>.<\/li>\n<li>Selecione o reposit\u00f3rio e a branch de onde deseja implantar.<\/li>\n<li>Atribua um nome \u00fanico ao seu site.<\/li>\n<li>Adicione as configura\u00e7\u00f5es de build no seguinte formato:\n<ul>\n<li><strong>Comando de build:<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Vers\u00e3o do Node:<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>Diret\u00f3rio de publica\u00e7\u00e3o:<\/strong> <code>public<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Por fim, clique em <strong>Criar site<\/strong>.<\/li>\n<\/ol>\n<p>E \u00e9 isso! Agora voc\u00ea tem um site est\u00e1tico ao vivo e totalmente funcional criado com Hugo.<\/p>\n<p>Se voc\u00ea marcou a op\u00e7\u00e3o Implanta\u00e7\u00e3o autom\u00e1tica ao implantar o seu site, sempre que editar o site e enviar as altera\u00e7\u00f5es para o reposit\u00f3rio Git, seu reposit\u00f3rio acionar\u00e1 automaticamente uma nova build e implanta\u00e7\u00e3o na Kinsta sem qualquer interven\u00e7\u00e3o manual.<\/p>\n<p>Como alternativa \u00e0 Hospedagem de Site Est\u00e1tico, voc\u00ea pode optar por implantar o seu site est\u00e1tico com a <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hospedagem de Aplicativos<\/a> da Kinsta, que oferece maior flexibilidade de hospedagem, uma gama mais ampla de benef\u00edcios e acesso a recursos mais robustos. Por exemplo, escalonamento, implanta\u00e7\u00e3o personalizada usando um Dockerfile e <a href=\"https:\/\/docs.sevalla.com\/applications\/analytics\">an\u00e1lise abrangente<\/a> que engloba dados em tempo real e hist\u00f3ricos.<\/p>\n\n<h2>Resumo<\/h2>\n<p>Hugo \u00e9 um dos mais populares geradores de sites est\u00e1ticos do mundo, e por uma boa raz\u00e3o. Ele n\u00e3o s\u00f3 tem um processamento de constru\u00e7\u00e3o super r\u00e1pido, mas tamb\u00e9m vem com poderosos recursos de modelos que suportam parciais e atalhos.<\/p>\n<p>Neste tutorial, voc\u00ea aprendeu como configurar Hugo, criar um novo projeto, adicionar arquivos content, editar arquivos de temas e implantar um site est\u00e1tico finalizado. N\u00f3s recomendamos passar pela documenta\u00e7\u00e3o oficial do Hugo para aprender mais sobre Hugo e seus recursos mais avan\u00e7ados como fun\u00e7\u00f5es personalizadas, front matter e buildpacks CSS\/JS.<\/p>\n<p><em>Qual a sua opini\u00e3o sobre o Hugo e outros geradores de sites est\u00e1ticos? Por favor, informe-nos nos coment\u00e1rios abaixo!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hugo \u00e9 um gerador de sites est\u00e1tico (SSG) escrito em Go (aka Golang), uma linguagem de programa\u00e7\u00e3o compilada de alto desempenho frequentemente usada para desenvolver aplicativos &#8230;<\/p>\n","protected":false},"author":125,"featured_media":44872,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[74,557,558],"topic":[1009,971,1022],"class_list":["post-44867","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-cms","tag-hugo","tag-static-site","topic-geradores-sites-estaticos","topic-headless-cms","topic-velocidade-do-site"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo<\/title>\n<meta name=\"description\" content=\"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo\" \/>\n<meta property=\"og:description\" content=\"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-29T07:44:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-18T11:03:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Brian Li\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@bwhli\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian Li\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"33 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/\"},\"author\":{\"name\":\"Brian Li\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1\"},\"headline\":\"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo\",\"datePublished\":\"2021-11-29T07:44:33+00:00\",\"dateModified\":\"2023-10-18T11:03:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/\"},\"wordCount\":5335,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg\",\"keywords\":[\"CMS\",\"hugo\",\"static site\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/\",\"name\":\"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg\",\"datePublished\":\"2021-11-29T07:44:33+00:00\",\"dateModified\":\"2023-10-18T11:03:59+00:00\",\"description\":\"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Como Construir um Site Est\u00e1tico R\u00e1pido com Hugo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Headless CMS\",\"item\":\"https:\/\/kinqsta.com\/pt\/topicos\/headless-cms\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1\",\"name\":\"Brian Li\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g\",\"caption\":\"Brian Li\"},\"description\":\"Brian has been a WordPress user for over 10 years, and enjoys sharing his knowledge with the community. In his free time, Brian enjoys playing the piano and exploring Tokyo with his camera. Connect with Brian on his website at brianli.com.\",\"sameAs\":[\"https:\/\/brianli.com\",\"https:\/\/x.com\/bwhli\"],\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/author\/brianli\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo","description":"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/","og_locale":"pt_PT","og_type":"article","og_title":"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo","og_description":"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.","og_url":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2021-11-29T07:44:33+00:00","article_modified_time":"2023-10-18T11:03:59+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg","type":"image\/jpeg"}],"author":"Brian Li","twitter_card":"summary_large_image","twitter_description":"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.","twitter_image":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg","twitter_creator":"@bwhli","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Brian Li","Tempo estimado de leitura":"33 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/"},"author":{"name":"Brian Li","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1"},"headline":"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo","datePublished":"2021-11-29T07:44:33+00:00","dateModified":"2023-10-18T11:03:59+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/"},"wordCount":5335,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg","keywords":["CMS","hugo","static site"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/","url":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/","name":"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg","datePublished":"2021-11-29T07:44:33+00:00","dateModified":"2023-10-18T11:03:59+00:00","description":"Hugo pode gerar a maioria dos sites em segundos (&lt;1 ms por p\u00e1gina). Saiba como voc\u00ea pode come\u00e7ar a construir seu site est\u00e1tico com Hugo.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#primaryimage","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/hugo-site-estatico.jpeg","width":1460,"height":730,"caption":"Como Construir um Site Est\u00e1tico R\u00e1pido com Hugo"},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/pt\/blog\/site-estatico-hugo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Headless CMS","item":"https:\/\/kinqsta.com\/pt\/topicos\/headless-cms\/"},{"@type":"ListItem","position":3,"name":"Como Construir um Site Est\u00e1tico e R\u00e1pido com Hugo"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/pt\/#website","url":"https:\/\/kinqsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/3bc8c901f2ccaa0d9f04d20355a538c1","name":"Brian Li","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1c444780ab66925cacf9d02bc95c56be?s=96&d=mm&r=g","caption":"Brian Li"},"description":"Brian has been a WordPress user for over 10 years, and enjoys sharing his knowledge with the community. In his free time, Brian enjoys playing the piano and exploring Tokyo with his camera. Connect with Brian on his website at brianli.com.","sameAs":["https:\/\/brianli.com","https:\/\/x.com\/bwhli"],"url":"https:\/\/kinqsta.com\/pt\/blog\/author\/brianli\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/44867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/users\/125"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/comments?post=44867"}],"version-history":[{"count":15,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/44867\/revisions"}],"predecessor-version":[{"id":64137,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/44867\/revisions\/64137"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44867\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44867\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44867\/translations\/es"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44867\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44867\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44867\/translations\/de"},{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44867\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media\/44872"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media?parent=44867"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/tags?post=44867"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/topic?post=44867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}