> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload e commit de aplicações pela CLI

> Faça deploy de uma pasta como nova aplicação com squarecloud upload, envie alterações com squarecloud commit e confira o conteúdo do zip com squarecloud zip.

* **`upload`** cria uma aplicação **nova**, com um novo ID.
* **`commit`** envia arquivos para uma aplicação que **já existe** e mantém o ID, o domínio e as configurações dela.
* **`zip`** gera o mesmo zip localmente, sem enviá-lo, para você conferir o que entra.

O `upload` e o `commit` também existem dentro de `squarecloud app` (`squarecloud app upload`, `squarecloud app commit`). Primeira vez aqui? Comece pelo [Início rápido](/pt-br/cli-reference/quickstart).

## O que entra no zip

O `upload`, o `commit` e o `zip` compactam a pasta atual e deixam de fora o que o [`squarecloud.ignore`](/pt-br/getting-started/squarecloud-ignore), na raiz do projeto, lista. Ele usa a sintaxe do `.gitignore` e é o mesmo arquivo que a [extensão para VS Code](/pt-br/vscode-extension/features#regras-de-ignore) lê.

* **Sempre ficam de fora antes de tudo:** `node_modules`, `.git`, `.github`, `.vscode`, `package-lock.json`, `pnpm-lock.yaml` e `yarn.lock`. As dependências são instaladas na plataforma a partir do seu manifesto. Para enviar um lockfile porque você precisa de versões fixas, adicione uma regra `!`, como `!package-lock.json`.
* **Links:** um link simbólico para um arquivo entra no zip como esse arquivo; links para pastas e links quebrados são ignorados, com um aviso no stderr.
* **Nomes antigos do arquivo** (`.squareignore`, `.squarecloudignore`, `square.ignore`) ainda são lidos quando o `squarecloud.ignore` não existe, com um aviso para renomear o arquivo.

## `squarecloud upload`

```bash Uso theme={"system"}
squarecloud upload [--file <path>] [--json]
```

Compacta a pasta atual e cria uma nova aplicação a partir dela. A pasta precisa de um arquivo [`squarecloud.app` ou `squarecloud.config`](/pt-br/getting-started/config-file).

| Flag | Descrição |
| - | - |
| `--file <path>` | Envia um zip que você já tem em vez de compactar a pasta atual. Caminhos relativos e absolutos funcionam. |

```bash theme={"system"}
squarecloud upload
# Compacta a pasta atual e faz o deploy dela como nova aplicação.
```

```bash theme={"system"}
squarecloud upload --file ./build/my-app.zip
# Envia um zip existente.
```

```bash Saída theme={"system"}
Compressing the current directory.
Uploading the zip file to Square Cloud.

✓ Application uploaded to Square Cloud!
  Open it at https://squarecloud.app/dashboard/applications/<appID>
```

Depois de um upload bem-sucedido, a CLI grava `ID=<appID>` no arquivo de configuração da pasta atual, para que os próximos comandos saibam de qual aplicação você está falando. Veja [onde o ID da aplicação é salvo](/pt-br/cli-reference/quickstart#onde-o-id-da-aplicação-é-salvo).

Com `--json`, o stdout traz só a aplicação criada (ID, nome, descrição, domínio, cluster, memória, CPU e linguagem) em JSON; as mensagens de progresso vão para o stderr.

## `squarecloud commit`

```bash Uso theme={"system"}
squarecloud commit [appID] [--file <path>] [--path <dir>] [-r]
```

**Aliases:** `squarecloud push`, `squarecloud app commit`, `squarecloud app push`

Compacta a pasta atual e a envia para uma aplicação existente. O ID vem do argumento ou da linha `ID=` do seu arquivo de configuração. Diferente dos outros comandos, o `commit` nunca abre um seletor: sem nenhum dos dois, ele para com código de saída 1.

| Flag | Descrição |
| - | - |
| `--file <path>` | Envia um arquivo em vez da pasta atual. Um zip é extraído na aplicação; qualquer outro arquivo é gravado com o próprio nome. Caminhos relativos e absolutos funcionam. |
| `--path <dir>` | Faz o commit nesta pasta da aplicação em vez da raiz. |
| `-r`, `--restart` | Reinicia a aplicação depois do commit. |

```bash theme={"system"}
squarecloud commit
# Envia a pasta atual para a aplicação da linha ID=.
```

```bash theme={"system"}
squarecloud commit <appID> --restart
# Envia a pasta atual para uma aplicação específica e depois a reinicia.
```

```bash theme={"system"}
squarecloud commit --file ./config.json --path settings
# Envia um arquivo para a pasta settings da aplicação.
```

```bash Saída theme={"system"}
Compressing the current directory.
Committing to your application (<appID>)...
Committed to your application.
```

Commits grandes não são interrompidos por timeout. O `commit` não tem saída em JSON.

## `squarecloud zip`

```bash Uso theme={"system"}
squarecloud zip
```

Compacta a pasta atual do mesmo jeito que o `upload` e o `commit` e a salva como `<nome da pasta>.zip` dentro dessa pasta, substituindo um arquivo existente com esse nome. Ele não precisa de login.

```bash Saída theme={"system"}
✓ Your project was zipped to <folder name>
```

Se o zip não puder ser gravado, a CLI imprime `Couldn't zip your application.` com o motivo; se um `<nome da pasta>.zip` antigo não puder ser apagado, ela avisa. Os dois casos saem com código 1.

## Relacionados

| Comando | API | SDK JavaScript | VS Code |
| - | - | - | - |
| `upload` | [`POST /v2/apps`](/pt-br/api-reference/endpoint/apps/upload) | [`api.apps.create()`](/pt-br/sdks/js/commit_and_upload) | [Enviar nova aplicação](/pt-br/vscode-extension/features#enviar-uma-nova-aplicação) |
| `commit` | [`POST /v2/apps/{app_id}/commit`](/pt-br/api-reference/endpoint/apps/commit) | [`api.apps.commit()`](/pt-br/sdks/js/commit_and_upload) | [Commit](/pt-br/vscode-extension/features#fazer-commit-de-alterações-em-uma-aplicação-existente) |

Para fazer deploy a cada push, veja [Deploys pelo GitHub](/pt-br/cli-reference/github-deploys).
