Automatizando Tarefas com script postbuild
Introdução
O script de postbuild é um recurso poderoso que pode automatizar diversas tarefas após a geração do build do projeto Angular. Neste artigo, vamos demonstrar uma implementação prática usando um exemplo simples: a inserção automática da versão da aplicação no index.html.
Tecnologias Utilizadas
- Node.js v22
- Angular v20
- npm 10
Implementação Passo a Passo
1. Criando o Projeto
ng new spa-postbuild-v20
Nota: As configurações padrão do Angular CLI são suficientes para nosso exemplo.
2. Configurando o Package.json
Adicione o script de postbuild no seu package.json:
{
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"postbuild": "node postbuild.js",
"watch": "ng build --watch --configuration development",
"test": "ng test"
}
}
Nota: O nome "postbuild" é especial no ecossistema npm - ele será executado automaticamente após o comando
build.
3. Preparando o Index.html
Modifique seu src/index.html para incluir uma meta tag app-version que será atualizada após o build:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SpaPostbuildV20</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="app-version" content="__VERSION__">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root></app-root>
</body>
</html>
4. Implementando o script PostBuild
Crie um arquivo postbuild.js na raiz do projeto:
const fs = require('fs');
const path = require('path');
const package = require('./package.json');
// Caminho padrão do index.html gerado após o build
const indexPath = path.join(__dirname, 'dist/spa-postbuild-v20/browser/index.html');
// Lê o conteúdo do arquivo
let indexContent = fs.readFileSync(indexPath, 'utf8');
// Substitui o placeholder pela versão atual do package.json
indexContent = indexContent.replace('__VERSION__', package.version);
// Salva o arquivo atualizado
fs.writeFileSync(indexPath, indexContent);
console.log(`✅ Versão ${package.version} inserida no index.html com sucesso!`);
Testando a Implementação
- Atualize a versão no package.json manualmente:
{
"name": "spa-postbuild-v20",
"version": "0.1.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"postbuild": "node postbuild.js",
"watch": "ng build --watch --configuration development",
"test": "ng test"
}
}
- Faça o build:
npm run build
- O arquivo
index.htmlgerado na pastadistterá a meta tag atualizada:
<meta name="version" content="0.1.0">
Ao rodar a SPA podemos fazer um inspect (F12) no arquivo
index.htmle ver a versão da SPA que chega no cliente.
Conclusão
O script postbuild é um recurso versátil que pode ser integrada à sua pipeline de CI/CD para automatizar tarefas cruciais após o build. Em nosso exemplo vimos como facilitar a identificação de qual versão da SPA está realmente e chegando no cliente, podemos chamar nossa atenção para questões de cache.
O exemplo demonstrado neste artigo é apenas um ponto de partida. O script postbuild pode ser expandido para atender necessidades específicas do seu projeto, tornando-se uma ferramenta essencial na automação do processo de build e deploy.