# Azion CLI init

O comando `init` da Azion CLI inicia um projeto a partir de um preset e de um template, em uma pasta que ele cria dentro do diretório atual. Um preset dá ao projeto as configurações de build de um framework ou de uma linguagem, e o template é o código inicial desse preset. O comando grava a pasta `azion` que o [Azion CLI deploy](/pt-br/documentacao/devtools/cli/deploy/) lê depois. Os presets que o build aceita estão em [Azion CLI presets](/pt-br/documentacao/devtools/cli/recursos/presets/), e 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 init` pede o preset e o template em dois seletores, depois busca o template e configura o projeto:

```bash
azion init [flags]
```

| Flag                     | Curta | Tipo   | Padrão    | Descrição                                                                                                                   |
| ------------------------ | ----- | ------ | --------- | --------------------------------------------------------------------------------------------------------------------------- |
| `--auto`                 | —     | —      | —         | Pula as perguntas sobre um servidor de desenvolvimento local e sobre um deploy no fim do comando.                           |
| `--config-dir`           | —     | string | `"azion"` | Caminho relativo da pasta que contém os seus arquivos `azion.json` e `args.json`.                                           |
| `--local`                | —     | —      | —         | Executa o build e o deploy na sua máquina quando você faz o deploy do projeto a partir deste comando.                       |
| `--name`                 | —     | string | —         | Nome da aplicação. O comando cria o projeto em uma pasta com esse nome. Sem ela, o comando pergunta o nome.                 |
| `--package-manager`      | —     | string | —         | Gerenciador de pacotes que instala as dependências do projeto, como `npm`, `yarn` ou `pnpm`.                                |
| `--skip-framework-build` | —     | —      | —         | Pula o build do framework que é executado antes do `azion build`.                                                           |
| `--sync`                 | —     | —      | —         | Sincroniza o arquivo `azion.json` local com os recursos remotos quando você faz o deploy do projeto a partir deste comando. |

O comando não tem flag que defina o preset ou o template: `--preset` e `--template` são recusadas com `Error: unknown flag`. Você escolhe os dois nos seletores em toda execução, mesmo com `--auto`. Para também responder à pergunta sobre as dependências sem parar, adicione `-y` a `--auto`.

Os seletores precisam de um terminal. Sem um, o comando para com `Error: EOF`.

Depois que o comando termina, entre na pasta do projeto antes de fazer o build ou o deploy. O comando imprime esse lembrete na saída.

### Perguntas

`azion init` faz estas perguntas, nesta ordem. Um seletor se move com as setas e filtra enquanto você digita:

| Pergunta                                                                                                         | Quando aparece                                                                                                                                                                                 | Como pular        |
| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| `Your application's name:`                                                                                       | Sem `--name`. O nome sugerido entre parênteses é aleatório em cada execução.                                                                                                                   | `--name`          |
| `Choose a preset:`                                                                                               | Em toda execução.                                                                                                                                                                              | Nenhuma flag      |
| `Choose a template:`                                                                                             | Depois do preset. Lista os templates do preset escolhido.                                                                                                                                      | Nenhuma flag      |
| `Do you want to install project dependencies? This may be required to generate initial configuration file (Y/n)` | Depois que o template é buscado e configurado.                                                                                                                                                 | `-y` responde sim |
| `Do you want to start a local development server? (y/N)`                                                         | Depois que as dependências são instaladas e a configuração é gerada. Com `n`, o comando imprime que o [Azion CLI dev](/pt-br/documentacao/devtools/cli/dev-comando/) inicia o servidor depois. | `--auto`          |
| `Do you want to deploy your project? (y/N)`                                                                      | Depois da pergunta sobre o servidor de desenvolvimento. Com `n`, o comando imprime que `azion deploy` faz o deploy do projeto depois.                                                          | `--auto`          |

O seletor de presets oferece 25 presets: *AI Studio*, *Angular*, *Astro*, *Docusaurus*, *Eleventy*, *Emscripten*, *Gatsby*, *Hexo*, *Hono*, *Hugo*, *Javascript*, *Jekyll*, *Next*, *Nuxt*, *OpenNextJS*, *Preact*, *Qwik*, *React*, *Rustwasm*, *Stencil*, *Svelte*, *Typescript*, *Vitepress*, *Vue* e *Vuepress*.

Essa lista é diferente da que `azion list presets` imprime e não tem uma entrada HTML. Para configurar um site HTML, execute `azion link --preset html` na pasta do site, como descreve o [Azion CLI link](/pt-br/documentacao/devtools/cli/link-comando/).

---

## Exemplos

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

### Inicializar um projeto de forma interativa

Este comando inicia um projeto chamado `my-app`. Nos seletores, selecione *Javascript* e depois *Hello World*, e responda `Y` à pergunta sobre as dependências:

```bash
azion init --name my-app
```

O comando busca o template, instala as dependências e gera a configuração inicial:

```text
? Choose a preset:  [Use arrows to move, type to filter]
> AI Studio
  Angular
  Astro
  Docusaurus
  Eleventy
  Emscripten
  Gatsby
  Hexo
  Hono
  Hugo
  Javascript
  Jekyll
  Next
  Nuxt
  OpenNextJS
  Preact
  Qwik
  React
  Rustwasm
  Stencil
  Svelte
  Typescript
  Vitepress
  Vue
  Vuepress
? Choose a preset: Javascript
? Choose a template:  [Use arrows to move, type to filter]
> Hello World
  HTMX Boilerplate
  Simple Javascript Router Node
  Simple Javascript Router
  QStash EdgeFunction Scheduler
  Upstash Geolocation
  Upstash Rate Limit
? Choose a template: Hello World

Fetching selected template...

Template successfully fetched
Template successfully configured
🤔 Do you want to install project dependencies? This may be required to generate initial configuration file (Y/n) Y
Installing application dependencies
up to date, audited 1 package in 307ms
found 0 vulnerabilities
…
[Azion] [Build] › ℹ  info      Using preset: javascript
[Azion] [Build] › ✔  success   Build completed successfully with only azion.config
[Azion] [IaC] › ✔  success   Manifest generated successfully at <project-dir>/.edge/manifest.json
```

Em seguida, o comando pergunta se deve iniciar um servidor de desenvolvimento local e se deve fazer o deploy do projeto. Com `n` nas duas, ele imprime como executar cada um depois e termina com `Your application my-app was initialized successfully`.

O comando cria o projeto em uma pasta `my-app` dentro do diretório atual. Para o template *Hello World* do preset *Javascript*, a pasta contém estes arquivos:

```text
.
./.edge
./.edge/manifest.json
./.gitignore
./azion
./azion.config.mjs
./azion/azion.json
./index.js
./info.json
./package-lock.json
./package.json
./README.md
./src
./src/function
./src/function/index.js
```

O template define a extensão do arquivo de configuração, `azion.config.mjs` ou `azion.config.cjs`. Para mais informações, consulte [azion.config.js](/pt-br/documentacao/devtools/cli/azion-config-js/).

### Inicializar um projeto com menos perguntas

Este comando inicia o mesmo projeto, e somente os dois seletores ficam para responder. Selecione *Javascript* e depois *Hello World*:

```bash
azion init --name my-app --auto -y
```

A opção `-y` instala as dependências, e `--auto` pula as perguntas sobre o servidor de desenvolvimento e sobre o deploy. O comando não faz deploy de nada:

```text
? Choose a preset:  [Use arrows to move, type to filter]
> AI Studio
  Angular
  Astro
  Docusaurus
  Eleventy
  Emscripten
  Gatsby
  Hexo
  Hono
  Hugo
  Javascript
  Jekyll
  Next
  Nuxt
  OpenNextJS
  Preact
  Qwik
  React
  Rustwasm
  Stencil
  Svelte
  Typescript
  Vitepress
  Vue
  Vuepress
? Choose a preset: Javascript
? Choose a template:  [Use arrows to move, type to filter]
> Hello World
  HTMX Boilerplate
  Simple Javascript Router Node
  Simple Javascript Router
  QStash EdgeFunction Scheduler
  Upstash Geolocation
  Upstash Rate Limit
? Choose a template: Hello World

Fetching selected template...

Template successfully fetched
Template successfully configured
Installing application dependencies
up to date, audited 1 package in 354ms
found 0 vulnerabilities
…
[Azion] [Build] › ℹ  info      Using preset: javascript
[Azion] [Build] › ✔  success   Build completed successfully with only azion.config
[Azion] [IaC] › ✔  success   Manifest generated successfully at <project-dir>/.edge/manifest.json
If you want to start a local development server later, run 'azion dev'
Make sure to change to the new working directory before running building or deploying your project
If you want to deploy your application later, run 'azion deploy'
Make sure to change to the new working directory before running building or deploying your project
Your application my-app was initialized successfully
```

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `-y`, que responde à pergunta sobre as dependências.
- [Azion CLI presets](/pt-br/documentacao/devtools/cli/recursos/presets.md): Os presets que o build e o comando link aceitam, e como eles diferem do seletor do init.
- [Azion CLI link](/pt-br/documentacao/devtools/cli/link-comando.md): O comando que configura uma pasta existente, como um site HTML, em vez de partir de um template.
- [Azion CLI deploy](/pt-br/documentacao/devtools/cli/deploy.md): O comando que faz o deploy do projeto a partir da pasta dele depois do init.
