Desenvolvimento

25 nov, 2013

Hooks do Git e pré-processadores CSS

Publicidade

Para um de meus recentes projetos, decidi usar o Stylus. Estou acostumado a utilizar Sass, mas isso necessitaria adicionar Ruby ao nosso stack – Stylus é baseado no Node.js e, já que estou utilizando Node.js para outras tarefas, pensei em dar uma chance ao Stylus.

Já que estou bastante envolvido com o desenvolvimento frontend do projeto, ou estou corrigindo bugs ou criando novos recursos, que em ambos os casos depende de grandes edições de CSS. O problema que estou passando é que estou me esquecendo de reprocessar as folhas de estilo ao mudar de branches, então as páginas começam a parecer estranhas e eu começo a ter ataques cardíacos.

Ao ver como a minha memória é falha, procurei por uma solução automatizada para esse problema. O Stylus possui um recurso de “vigia”, mas eu achei lento e sou impaciente. Em seguida, tentei os hooks do git. Sempre ouvi sobre eles, mas nunca tinha perdido tempo com eles – um grande erro. Para resolver meu problema de pré-processamento ao alternar branches, criei um hook post-checkout. Na mosca!

O primeiro passo é preencher o arquivo chamado post-checkout (sem extensão) no diretório .git/hooks do projeto:

cd .git/hooks && touch post-checkout

Depois, rodar meu script de compilação. O script de compilação é um arquivo externo (está conectado ao nosso processo de build), então tudo que preciso fazer é rodá-lo:

#!/bin/sh
./scripts/compile-scripts

No caso de você querer ver meu script de compilação CSS, aqui está:

#! /bin/sh

BASEDIR=$(dirname $0)
CSSDIR=$BASEDIR/../media/redesign/css/

if [ ! -d "$CSSDIR" ]; then
	mkdir $BASEDIR/../media/redesign/css/
fi

for file in main print wiki demo-studio profile search zones home
do
	stylus $BASEDIR/../media/redesign/stylus/$file.styl --out $BASEDIR/../media/redesign/css --compress
done

Provavelmente não preciso dizer a você como os hooks do git são incríveis, mas, no caso de pré-processamento instantâneo de CSS, eles são uma mão na roda!

***

Artigo traduzido pela Redação iMasters, com autorização do autor. Publicado originalmente em  http://davidwalsh.name/git-hooks