Em suas primeiras versões, este site havia sido desenvolvido em Wordpress, porém com o passar do tempo e do advento dos geradores de sites estáticos, optou-se por migrar do Wordpress para o Jekyl e agora, do Jekyl para o Hexo.

Jekyl

O Jekyl é um gerador de sites estáticos, bastante rápido, escrito em Ruby e é também, o gerador “oficial” utilizado no GitHub Pages, motivo principal que levou esta página à ser migrada para ele inicialmente.

Hexo

O Hexo, assim como o Jekyl, também é um gerador de sites estáticos, porém este é escrito em Nodejs. Bastante semelhante ao Jekyl em funcionalidade, efetuar esta migração é um passo bastante simples, sendo necessário tomar cuidado apenas com pequenos detalhes.

Instalando o Hexo

Acesse o Terminal e execute o seguinte comando:

$npm install hexo-cli -g

Para maiores esclarecimentos sobre a instalação, você pode acessar a documentação no site do Hexo.

Migrando do Jekyl para o Hexo

Crie um novo projeto com o Hexo:

$hexo init <nome-do-projeto>
$cd <nome-do-projeto>
$npm install

Lembrando que nome-do-projeto, deve ser substituido pelo nome do seu projeto.

Uma vez que este procedimento estiver concluído, configure o seu projeto, editando o arquivo _config.yml que se encontra na raiz do diretório nome-do-projeto.

Este arquivo de configuração é bastante intuitívo e segue o padrão de qualquel YAML.

Defina os valores para as principais tags como title, description e author. Defina language com o valor pt-BR, a URL seu site em url e ajuste os padrões de data e hora em date_format, com DD/MM/YYY e time_format com HH:mm:ss, respectivamente.

Migrando os Posts

Para migrar os Posts, basta copiar os arquivos de post do Jekyll, que estão na pasta _posts e no formato Markdown (*.md), para a pasta source/_posts/ do Hexo.

Volte para o seu arquivo de configuração (_config.yml) e ajuste o valor da tag, new_post_name para utilizar o mesmo padrão que você possuia no Jekyll. No meu caso, o valor definido foi blog/:title.md, pois meus posts ficam todos no subdiretório blog e possuem como URL, apenas o título.

Gerando os arquivos estáticos

Para gerar as páginas estáticas do Hexo, basta executar o comando:

$hexo generate

Este procedimento irá processar todos os seus arquivos .md e irá gerar os devidos arquivos para cada um dos Posts, irá também, gerar a paginação, arquivos (indice de posts) e tags, caso você às utilize.

O generate também se encarrega de copiar quaisquer arquivos estáticos, como assets da pasta source, para a pasta de destino, no diretório public.

Lembre-se de não efetuar qualquer alteração no conteúdo dos arquivos do diretório public, pois sempre que o generate é executado, estes conteúdos são sustituídos/atualizados, com base no conteúdo do diretório source e do resultado de geração das páginas estáticas.

Servindo as páginas estáticas

Para servir as páginas estáticas do Hexo, você pode utilizar o próprio Hexo, bastando executar o comando:

$hexo serve

Assim, você poderá acessar o http://localhost:4000 para navegar e visualizar o seu site.

Fazendo o deploy

O Hexo provê um sistema bastante simples e efetivo para efetuar o deploy.

Para que você possa fazer o deploy via git, por exemplo, você deverá adicionar ao arquivo _config.yml, as seguintes informações:

deploy:
    type: git
    repo: <url-do-repositorio.git>
    branch: <nome-do-branch-normalmente-master>

Feita esta configuração, não se esqueça de efetuar a instalação do plugin de deploy, com o comando:

$npm install hexo-deployer-git --save

Enfim, para efetuar o deploy, execute o comando:

$hexo deploy

Caso você ainda possua dúvidas, não deixe de consulta a seção de Deployment na documentação.

GitHub Pages

Para que você possa utilizar o Hexo no GitHub Pages, será necessário mais alguns passos.

Crie um Branch para os Fontes!

Para que você possa publicar o seu site no GitHub Pages, você deverá criar um novo branch para os fontes do seu projeto, deixando o branch master, apenas para o site gerado através do comando hexo deploy, isto por que atualmente o GitHub Pages, só serve os sites estáticos à partir do branch master.

No meu caso:
Criei um repositório git
Criei um branch source
Criei o projeto do hexo neste branch source
Efetuo git add, commit e push apenas neste branch
Deixo o branch master nas mãos do hexo deploy

CNAME

Caso você esteja apontando o seu domínio para o GitHub Pages, é bem provável que você já possui um CNAME configurado.

Se não sabe o que é isto, verifique artigo utilizando um domínio customizado com o github pages.

Para que você possa manter as configurações do CNAME funcionais, será necessário copiar o seu arquivo CNAME para a raiz da pasta souce.

Adicionando e Gerando Posts

Passados os passos anteriores, o fluxo de utilização do Hexo será o seguinte:

Criando um novo Post:

$ hexo new post <titulo-do-post>

Edite o arquivo source/_posts/titulo-do-post.md

Gerando e visualizando as páginas:

$ hexo generate
$ hexo serve

Acesse o link http://localhost:4000

Efetuando o deploy

$hexo deploy