# Azion CLI build

O comando `build` da Azion CLI faz o build do projeto no diretório atual na sua máquina e grava o resultado na pasta `.edge`. Ele executa o Azion Bundler com o preset do projeto e gera `.edge/manifest.json`, o arquivo que um deploy local lê. O comando não faz o deploy de nada. As opções que todo comando aceita, como `--format`, `--out` e `-y`, estão em [Opções globais](/pt-br/documentacao/devtools/cli/globals/).

---

## Uso

`azion build` lê as configurações do projeto na pasta `azion` do diretório atual. Execute-o na pasta raiz do projeto:

```bash
azion build [flags]
```

| Flag                     | Curta | Tipo   | Padrão      | Descrição                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------------------ | ----- | ------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--alias-env`            | —     | —      | —           | Renomeia cada variável que o build lê dos arquivos `.env` do projeto com um prefixo formado a partir do nome do projeto, tanto no bundle quanto em `.edge/.env.azion`. O prefixo é o nome em maiúsculas, com cada sequência de caracteres que não são letras nem dígitos trocada por um único `_`, mais um `_` final: `my-app` gera `MY_APP_`.                                                                                                                                                       |
| `--config-dir`           | —     | string | `"azion"`   | Caminho relativo para a pasta que guarda os seus arquivos `azion.json` e `args.json`.                                                                                                                                                                                                                                                                                                                                                                                                                |
| `--config-file`          | —     | string | —           | Caminho para o arquivo `azion.config` usado no build, como `azion.staging.config.cjs`. Sem ela, o build usa o arquivo `azion.config.*` do diretório atual. Um caminho relativo é resolvido a partir do diretório atual. Com `--debug`, a saída nomeia o arquivo em uso: `Using azion.staging.config.cjs config file`. Um caminho para um arquivo inexistente faz o comando falhar com `Error: The azion.config file informed in --config-file was not found. Verify the path and try again: <path>`. |
| `--entry`                | —     | string | `./main.js` | Ponto de entrada do código do build.                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `--preset`               | —     | string | —           | Preset com que o build do projeto é feito, quando você quer um preset diferente do preset do próprio projeto. Os nomes de preset são os que `azion list presets` imprime. Para mais informações, consulte [Azion CLI presets](/pt-br/documentacao/devtools/cli/recursos/presets/).                                                                                                                                                                                                                   |
| `--skip-framework-build` | —     | —      | —           | Pula o build do framework que é executado antes do build da Azion. Use-a quando você já fez o build do framework.                                                                                                                                                                                                                                                                                                                                                                                    |
| `--use-node-polyfills`   | —     | string | —           | Adiciona polyfills do Node.js ao build, para que o código que chama APIs específicas do Node.js continue compatível.                                                                                                                                                                                                                                                                                                                                                                                 |
| `--use-own-worker`       | —     | string | —           | Informa ao build que o seu código declara a própria expressão de worker, como `addEventListener("fetch")`, para que o build não injete um provider. Use-a quando o seu código já configura o worker.                                                                                                                                                                                                                                                                                                 |

O build grava estes arquivos em `.edge`:

- `.edge/manifest.json`, o manifesto que `azion deploy --local` lê.
- `.edge/functions/handler.js` para um preset estático, ou `.edge/functions/index.js` para o preset JavaScript.
- `.edge/storage/metadata.json` e uma pasta de storage com o nome do bucket e do prefixo de storage.

Até o primeiro deploy, a pasta de storage tem os nomes literais `$BUCKET_NAME/$BUCKET_PREFIX`, os placeholders do arquivo `azion.config` do projeto. O deploy substitui os placeholders nesse arquivo pelo nome do bucket e por um prefixo de storage. Para o preset `html`, o build não cria nenhuma pasta `dist`.

`azion deploy --local` executa o mesmo build antes de enviar os arquivos. Use `azion build` para verificar um build na sua máquina antes de fazer o deploy.

---

## Exemplos

Cada exemplo mostra o comando e a saída que ele imprime.

### Fazer o build de um site estático

Este comando faz o build de um site configurado com o preset `html`:

```bash
azion build
```

O comando executa o Azion Bundler com o preset do projeto e imprime o caminho do manifesto que gera:

```text
Building your Application. This process may take a few minutes
Running build step command:

$ npx --yes  @aziontech/bundler@1.2.0 build --preset html --config-version 4
…
[Azion] [Build] › ℹ  info      Using preset: html
[Azion] [Pre-Build] › ℹ  info      Starting pre-build...
[Azion] [Pre-Build] › ℹ  info      Pre-build completed successfully
[Azion] [Build] › ℹ  info      Using built-in handler from "html" preset.
[Azion] [Build] › ℹ  info      Starting build...
[Azion] [Build] › ✔  success   Build completed successfully
[Azion] [Post-Build] › ℹ  info      Starting post-build...
[Azion] [Post-Build] › ✔  success   Post-build completed successfully
[Azion] [Storage] › ℹ  info      Using provided prefix for storage '$BUCKET_NAME': $BUCKET_PREFIX
[Azion] [IaC] › ✔  success   Manifest generated successfully at <project-dir>/.edge/manifest.json
Your Application was built successfully
```

Depois do build, a pasta `.edge` guarda esta árvore. A árvore contém `handler.dev.js` quando `azion dev` já rodou no projeto antes do build:

```text
.edge
.edge/functions
.edge/functions/handler.dev.js
.edge/functions/handler.js
.edge/manifest.json
.edge/storage
.edge/storage/$BUCKET_NAME
.edge/storage/$BUCKET_NAME/$BUCKET_PREFIX
.edge/storage/metadata.json
```

### Fazer o build de um projeto de framework

Este comando faz o build de um projeto configurado com o preset `angular`:

```bash
azion build
```

Na etapa de pre-build, o Azion Bundler executa o build do próprio framework, aqui `ng build`, e depois o build da Azion. `--skip-framework-build` deixa o build do framework de fora:

```text
Building your Application. This process may take a few minutes
Running build step command:

$ npx --yes  @aziontech/bundler@1.2.0 build --preset angular --config-version 4
…
[Azion] [Build] › ℹ  info      Using preset: angular
[Azion] [Pre-Build] › ℹ  info      Starting pre-build...
…
[Angular] › ℹ  info
> angular-boilerplate@22.0.2 build
> ng build --output-path=./dist

[Angular] › ℹ  info      ❯ Building...

[Angular] › ℹ  info      ✔ Building...

[Angular] › ℹ  info      Initial chunk files   | Names         |  Raw size | Estimated transfer size
main-JHJQWKMP.js      | main          | 218.66 kB |                59.77 kB
polyfills-5CFQRCPP.js | polyfills     |  34.59 kB |                11.33 kB
styles-5INURTSO.css   | styles        |   0 bytes |                 0 bytes

                      | Initial total | 253.24 kB |                71.11 kB

Application bundle generation complete. [1.759 seconds] - 2026-01-01T12:00:00.833Z

[Angular] › ℹ  info      Output location: <project-dir>/dist

[Azion] [Pre-Build] › ℹ  info      Pre-build completed successfully
[Azion] [Build] › ℹ  info      Using built-in handler from "angular" preset.
[Azion] [Build] › ℹ  info      Starting build...
[Azion] [Build] › ✔  success   Build completed successfully
[Azion] [Post-Build] › ℹ  info      Starting post-build...
[Azion] [Post-Build] › ✔  success   Post-build completed successfully
[Azion] [Storage] › ℹ  info      Using provided prefix for storage '$BUCKET_NAME': $BUCKET_PREFIX
[Azion] [IaC] › ✔  success   Manifest generated successfully at <project-dir>/.edge/manifest.json
Your Application was built successfully
```

O framework grava a saída dele em `dist`, e o build da Azion grava a mesma árvore `.edge` de um site estático, sem `handler.dev.js`.

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--debug`, `--format` e `-y`.
- [Azion CLI deploy](/pt-br/documentacao/devtools/cli/deploy.md): O comando que faz o deploy do projeto, fazendo o build dele antes, a menos que você pule o build.
- [Azion CLI dev](/pt-br/documentacao/devtools/cli/dev-comando.md): O comando que faz o build do projeto e o serve na sua máquina.
- [Azion CLI presets](/pt-br/documentacao/devtools/cli/recursos/presets.md): Os nomes de preset que `--preset` aceita.
