Migrar este blog de Wordpress para um static site generator é algo que pretendia fazer há algum tempo. A fase de planeamento começou no início do segundo trimestre de 2020. Pouco tempo depois, a fibromialgia surgiu na minha vida e fui obrigado a arrumar a ideia numa gaveta. A vontade de o fazer, contudo, nunca desapareceu; só faltava a energia e a concentração para passar à ação e para a realização do trabalho.

Em novembro do ano passado, aborrecido com a minha saúde e desejoso de arranjar algo para me ajudar a distrair das dores, comecei a preparar a migração. Vi algumas opções para static site generator e acabei por escolher o Hugo. De todos os que vi, foi o que me pareceu mais simples de usar sem sacrificar funcionalidades e com várias boas opções de templates como base para desenvolver o meu. A experiência a criar o blog sobre fibromialgia também ajudou nesta decisão - se bem que, nesse, escolhi um template em que praticamente não fiz modificações.

A migração

A parte inicial da migração foi a leitura da documentação do Hugo e a análise de alguns templates (sempre há um lado positivo em ter problemas em dormir por causa das dores: fica-se com tempo livre a mais). Este passo facilitou bastante os seguintes porque me muniu de conhecimento suficiente para começar a trabalhar o template que escolhi como base a uma velocidade aceitável, dentro das muitas limitações que a fibromialgia me trouxe - como a dificuldade de concentração, por exemplo.

Assim que aquilo que entendi como mínimo necessário para o template estava feito, tive de arranjar forma de migrar o conteúdo para ficheiros markdown. Fazê-lo manualmente era impensável, pois era algo que ia demorar imenso tempo. A solução passava claramente pela automatização.

Encontrar uma ferramenta para fazer a conversão automaticamente não foi fácil. A documentação do Hugo menciona algumas aplicações, mas nenhuma delas conseguiu produzir resultados minimamente desejáveis. Só depois de uma pesquisa num motor de busca é que encontrei uma que gera resultados satisfatórios, quando cheguei a este post. A aplicação chama-se wordpress-export-to-markdown e faz praticamente tudo bem na exportação menos gerar o path para a imagem de destaque conforme a implementação que fiz no template. Para resolver isso, bastou realizar umas pequenas alterações ao código-fonte, alterações essas que irei publicar eventualmente.

Resolvido este problema, surgiu outro: corrigir a formatação de alguns posts. Este é um work in progress e será feito conforme a energia que vou tendo para isso. Sim, quer dizer que pode demorar algum tempo.

O template

Por forma a ter bons tempos de carregamento e uma base sólida fácil de alterar, escolhi o Paper como template base. Este é um dos mais conhecidos e usados para Hugo, o que significa boa documentação, manutenção e também, em teoria, menos dores de cabeça para mim. Para dores de cabeça, já me bastam a fibromialgia e a sinusite. 😮‍💨

A base é boa, mas nem tudo é perfeito: por exemplo, o tema não suporta imagens de destaque. Para adicionar a funcionalidade, tive de usar a mesma implementação feita no template do blog sobre fibromialgia, e adaptar a metadata do Opengraph e Twitter cards a essa implementação. Assim não há risco da imagem de destaque de um post não aparecer quando é partilhado nas redes sociais.

Esta não foi a única alteração que fiz. Algumas delas foram estéticas, como uma palete de cores diferente ou a forma como a navegação entre páginas e posts aparece. O overflow da imagem de destaque, que também pode ser aplicado às imagens dentro do post com a classe CSS .full-width, foi mais uma mudança que fiz ao original. Estas alterações aproximam o template do que usava em Wordpress e do qual gostava bastante.

Outras das alterações que fiz foram, por exemplo, a criação de um shortcode para conteúdos do Spotify, regras de Cache-Control e ativação da compressão gzip na maioria dos conteúdos. Estas duas últimas alterações permitiram-me conseguir uma classificação de 100% para a página inicial no PageSpeed Insights.

Repositório git

O conteúdo e o template estão disponíveis num repositório no Github. Este repositório, no entanto, é temporário: quando tiver a migração mais avançada, vou colocar o template num e o conteúdo noutro. Enquanto isso não acontece, podes ver o que tenho feito até agora, incluindo os disparates, no histórico de commits. Algum do histórico de alterações não está lá porque só criei o repositório uns tempos depois de ter começado a trabalhar na migração. Ainda assim, dá para teres uma ideia do fiz até agora E podes submeter pull-requests e reportar bugs, que eu agradeço.

Agora despeço-me com amizade. Até ao próximo post.

A imagem deste post é da autoria de Chris Briggs e foi publicada no Unsplash. A licença está disponível no site.