# Azion CLI dev

O comando `dev` da Azion CLI faz o build do projeto no diretório atual e inicia um servidor de desenvolvimento local, para que você teste uma aplicação ou uma function na sua máquina antes de fazer o deploy. Execute-o na pasta raiz de um projeto que o [Azion CLI init](/pt-br/documentacao/devtools/cli/init/) criou ou que o [Azion CLI link](/pt-br/documentacao/devtools/cli/link-comando/) configurou. Para um projeto existente que não está configurado para a Azion, execute `azion link` antes. As opções que todo comando aceita, como `--debug`, `--format` e `-y`, estão em [Opções globais](/pt-br/documentacao/devtools/cli/globals/).

---

## Uso

`azion dev` faz o build do projeto com o preset da configuração dele e depois serve o build em `http://localhost:3333`:

```bash
azion dev [flags]
```

| Flag                     | Curta | Tipo | Padrão | Descrição                                          |
| ------------------------ | ----- | ---- | ------ | -------------------------------------------------- |
| `--port`                 | —     | int  | `3333` | Porta em que o servidor de desenvolvimento escuta. |
| `--skip-framework-build` | —     | —    | —      | Pula a fase de build do framework.                 |

Depois do primeiro build, o comando imprime `Initial scan complete. Ready for changes.` e observa o projeto. Quando um arquivo muda, ele imprime `Rebuilding with the new changes...`, faz o build do projeto de novo e serve o novo build na mesma porta. O servidor continua em execução até você pará-lo.

---

## Exemplos

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

### Executar uma function localmente

Este comando inicia o servidor de desenvolvimento para um projeto JavaScript que `azion init` criou a partir do template Hello World:

```bash
azion dev
```

O comando faz o build da function e imprime o endereço do servidor:

```text
…
[Azion] [Build] › ℹ  info      Using preset: javascript
[Azion] [Pre-Build] › ℹ  info      Starting pre-build...
[Azion] [Pre-Build] › ℹ  info      Pre-build completed successfully
[Azion] [Build] › ℹ  info      Using preset default entry: index.js
[Azion] [Build] › ⚠  warning   DEPRECATED: Migrate handler to → export default { fetch: (request, env, ctx) => {...} }
[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] [Server] › ✔  success   Function running on port 0.0.0.0:3333, url: http://localhost:3333
[Azion] [Server] › ℹ  info      Initial scan complete. Ready for changes.
```

Enquanto o servidor está em execução, envie uma requisição a ele a partir de outro terminal. A function deste projeto retorna uma mensagem, o caminho da requisição e o método da requisição como JSON:

```bash
curl -s -i 'http://localhost:3333/hello?x=1'
```

```text
HTTP/1.1 200 OK
content-type: application/json;charset=UTF-8
Date: Thu, 01 Jan 2026 12:00:00 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked

{"message":"Hello from my-function","path":"/hello","method":"GET"}
```

### Servir um site estático em outra porta

Este comando inicia o servidor de desenvolvimento para um site HTML na porta `4444` em vez da porta padrão:

```bash
azion dev --port 4444
```

As últimas linhas da saída mostram a porta que você passou:

```text
…
[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 'my-site': 20260101120000
[Azion] [Server] › ✔  success   Function running on port 0.0.0.0:4444, url: http://localhost:4444
[Azion] [Server] › ℹ  info      Initial scan complete. Ready for changes.
```

Uma requisição à raiz do site nessa porta retorna o status `200`:

```bash
curl -s -o /dev/null -w '%{http_code}' http://localhost:4444/
```

```text
200
```

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--debug`, `--log-level` e `--silent`.
- [Azion CLI build](/pt-br/documentacao/devtools/cli/build.md): O comando que faz o build do projeto sem iniciar um servidor.
- [Azion CLI deploy](/pt-br/documentacao/devtools/cli/deploy.md): O comando que faz o deploy do projeto na Azion depois que você o testa localmente.
- [Escreva e teste uma função](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/functions-e-runtime/primeiros-passos.md): Como escrever o handler de uma function e verificar a resposta dela no Azion Console.
