# Azion CLI link

O comando `link` da Azion CLI configura o projeto do diretório atual para que a CLI possa fazer o build, executar e fazer o deploy dele como uma [Application](/pt-br/documentacao/plataforma/applications/). Ele grava o arquivo `azion/azion.json` e um arquivo [azion.config](/pt-br/documentacao/devtools/cli/azion-config-js/) para o preset que você escolhe, e pode adicionar entradas ao `.gitignore` e um workflow do GitHub Actions. O comando não cria nenhum recurso na Azion: todo ID em `azion/azion.json` fica `0` até o primeiro deploy. 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

Execute `azion link` a partir da pasta raiz do projeto:

```bash
azion link [flags]
```

| Flag                     | Curta | Tipo   | Padrão    | Descrição                                                                                                                                                                                                                    |
| ------------------------ | ----- | ------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--auto`                 | —     | —      | —         | Executa o comando inteiro sem parar para nenhuma pergunta. Adiciona as entradas do `.gitignore` e o workflow do GitHub Actions, e não faz o build nem o deploy do projeto.                                                   |
| `--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. Sem ela, o comando sugere um nome aleatório e pede que você o aceite ou digite outro.                                                                                                                     |
| `--package-manager`      | —     | string | —         | Gerenciador de pacotes a usar, como `npm`, `yarn` ou `pnpm`.                                                                                                                                                                 |
| `--preset`               | —     | string | —         | Preset com o qual o projeto faz o build, como `html` ou `next`. Os nomes são os que o [Azion CLI presets](/pt-br/documentacao/devtools/cli/recursos/presets/) lista. Sem ela, o comando abre um seletor com os mesmos nomes. |
| `--remote`               | —     | string | —         | URL de um repositório Git a clonar e vincular a uma aplicação.                                                                                                                                                               |
| `--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.                                                                                                  |

Para um site HTML estático, use o preset `html`. Um projeto vinculado com `html` serve os arquivos da sua pasta `www`, então mova os seus arquivos para `www` antes de fazer o build ou o deploy. Os arquivos na raiz do projeto não são enviados.

Para executar o comando a partir de um script, passe `--name`, `--preset` e `--auto`. O comando então não faz nenhuma pergunta.

---

## Exemplos

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

### Vincular um site estático sem perguntas

Este comando vincula um site HTML estático chamado `my-site` e não faz nenhuma pergunta:

```bash
azion link --name my-site --preset html --auto
```

O comando grava os arquivos do projeto e lembra você de fazer o build do projeto:

```text
Project successfully configured
Sucessfully written to your .gitignore file
Successfully created GitHub Actions workflow file at .github/workflows/azion-deploy.yml
…
Please, remember to run azion build --preset [preset-name], in order to generate the necessary configuration files
```

O comando adiciona `.edge/`, `.vulcan` e `.open-next` ao `.gitignore`, grava o `azion.config.cjs` e grava o `azion/azion.json` sem IDs de recursos:

```json
{
  "name": "my-site",
  "bucket": "",
  "preset": "html",
  "env": "production",
  "prefix": "",
  "rotate-prefix": true,
  "function": [],
  "application": {
    "id": 0,
    "name": "__DEFAULT__"
  },
  "domain": {
    "id": 0,
    "name": "__DEFAULT__",
    "domain_name": "",
    "url": ""
  },
  "rt-purge": {
    "purge_on_publish": true
  },
  "origin": null,
  "rules-engine": {
    "created": false,
    "rules": null
  },
  "cache-settings": null,
  "workloads": {
    "id": 0,
    "name": "",
    "domains": null,
    "url": "",
    "deployment_id": null
  },
  "connectors": null
}
```

O workflow em `.github/workflows/azion-deploy.yml` executa `azion build` e `azion deploy --local` quando você o inicia manualmente no GitHub. Ele lê um personal token do secret `AZION_PERSONAL_TOKEN` do repositório.

### Vincular um projeto com perguntas

Este comando vincula o mesmo tipo de site e faz uma pergunta em cada etapa:

```bash
azion link --name my-site
```

O comando pede que você confirme a pasta e depois abre o seletor de presets. Este exemplo responde sim ao `.gitignore`, não ao workflow, sim ao build e não às dependências, ao servidor de desenvolvimento local e ao deploy:

```text
🤔 Do you want to link <project-dir> to Azion? (y/N) y

Getting presets available (Some dependencies may need to be installed)
…
? Choose a preset: html
Project successfully configured
🤔 Azion CLI creates some files during the build process for internal use. Would you like to add these to your .gitignore file? (Y/n) Y
Sucessfully written to your .gitignore file
🤔 Would you like to add a GitHub Actions workflow for automated deployment? (Y/n) n
…
🤔 Do you allow Azion to build your project in order to generate configuration files? (Y/n) Y
🤔 Do you want to install project dependencies? This may be required to start local development server (Y/n) n


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

$ npx --yes  @aziontech/bundler@1.1.4 build --preset html
…
[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
🤔 Do you want to start a local development server? (y/N) n
If you want to start a local development server later, run 'azion dev'
🤔 Do you want to deploy your project? (y/N) n
If you want to deploy your application later, run 'azion deploy'
Your application my-site was linked successfully
```

Sem `--name`, o comando pergunta o nome depois da pergunta sobre a pasta e sugere um nome aleatório:

```text
? (Hit enter to accept the suggested name in parenthesis) Your application's name:  (affectionate-rainbow)
```

---

## Recursos relacionados

- [Azion CLI init](/pt-br/documentacao/devtools/cli/init.md): O comando que cria um projeto a partir de um template em vez de vincular uma pasta existente.
- [Azion CLI dev](/pt-br/documentacao/devtools/cli/dev-comando.md): Como executar o projeto vinculado na sua máquina antes de fazer o deploy dele.
- [Azion CLI deploy](/pt-br/documentacao/devtools/cli/deploy.md): O comando que cria os recursos para os quais a pasta `azion` aponta e faz o deploy do projeto.
- [Azion CLI unlink](/pt-br/documentacao/devtools/cli/comando-unlink.md): O comando que remove a pasta `azion` do projeto e também pode excluir os recursos remotos dele.
