4 MIN LEITURA · Pedro Thomaz

Sem etapa de build

A maioria dos sites modernos é publicada através de uma pipeline de build. O nosso não. Eis o que a contenção oferece a um site que tem de durar.

Sem etapa de build

Abra o nosso repositório e falta qualquer coisa. Não há pasta dist/. Não há node_modules no deploy. Nenhum bundler, nenhuma etapa de compilação à espera entre uma edição e o site em produção. Mudamos um ficheiro; é esse ficheiro que corre.

É deliberado, e é mais raro do que devia ser.

O padrão que toda a gente herdou

A web moderna pressupõe um build. O código-fonte é transpilado, empacotado, hasheado e despejado numa pasta que ninguém lê. Funciona — até deixar de funcionar. As toolchains apodrecem. Um site construído sobre uma toolchain de 2021 muitas vezes nem sequer compila em 2026: uma dependência mudou, um loader partiu-se, o lockfile aponta para versões que já não existem. O build devia ajudar; agora é a coisa que se interpõe entre nós e uma correção de uma linha.

O que fazemos em vez disso

O site é PHP 8.3 simples, renderizado no próprio servidor. O conteúdo vem de um CMS headless através de uma API simples; tudo o resto é HTML, CSS e um pouco de JavaScript escritos à mão. O deploy é um espelho FTP e uma limpeza de cache — sem CI, sem contentor, sem pipeline que se parta por causa da mudança de outra pessoa. Onde a maioria das stacks empacota e desfigura, nós mantemos um ficheiro-fonte e o seu gémeo minificado lado a lado, com cache-busting por uma query ?v=<mtime> para que o browser receba sempre a versão mais recente.

O compromisso honesto

Não é grátis. Mantemos esses ficheiros minificados à mão em vez de deixar uma ferramenta fazê-lo — uma pequena disciplina, um passo extra por cada alteração. Mas o custo é pequeno, visível e inteiramente nosso, não terceirizado a quarenta dependências que não controlamos.

Porque é que isto importa

O site carrega em milissegundos e pontua nos 90 e poucos no Lighthouse sem um único plugin de otimização. Não há nada que nos prenda — ou ao cliente — a um fornecedor. E daqui a dez anos, alguém pode abrir estes ficheiros e simplesmente lê-los. É esse o objetivo.

Uma etapa de build é uma aposta em que as ferramentas ainda lá estarão quando precisarmos delas. Preferimos não apostar com o site de um cliente.

A contenção não é a ausência de engenharia. Às vezes é o seu ponto mais alto.