> ## 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.

# Subir y actualizar apps desde la CLI

> Haz deploy de una carpeta como app nueva en Square Cloud con squarecloud upload, envía cambios con squarecloud commit y revisa el zip con squarecloud zip.

* **`upload`** crea una aplicación **nueva**, con un ID nuevo.
* **`commit`** envía archivos a una aplicación que **ya existe** y conserva su ID, su dominio y su configuración.
* **`zip`** genera el mismo zip en local, sin enviarlo, para que compruebes qué va dentro.

`upload` y `commit` también existen bajo `squarecloud app` (`squarecloud app upload`, `squarecloud app commit`). ¿Eres nuevo? Empieza con la [Guía rápida](/es/cli-reference/quickstart).

## Qué va dentro del zip

`upload`, `commit` y `zip` comprimen la carpeta actual y dejan fuera lo que lista [`squarecloud.ignore`](/es/getting-started/squarecloud-ignore), en la raíz del proyecto. Usa la sintaxis de `.gitignore` y es el mismo archivo que lee la [extensión de VS Code](/es/vscode-extension/features#reglas-de-exclusión).

* **Siempre se excluyen primero:** `node_modules`, `.git`, `.github`, `.vscode`, `package-lock.json`, `pnpm-lock.yaml` y `yarn.lock`. Las dependencias se instalan en la plataforma a partir de tu manifiesto. Para enviar un lockfile porque necesitas versiones fijas, agrega una regla `!`, como `!package-lock.json`.
* **Enlaces:** un enlace simbólico a un archivo se comprime como ese archivo; los enlaces a carpetas y los enlaces rotos se omiten con un aviso en stderr.
* **Los nombres de archivo antiguos** (`.squareignore`, `.squarecloudignore`, `square.ignore`) todavía se leen cuando falta `squarecloud.ignore`, con una advertencia para que renombres el archivo.

## `squarecloud upload`

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

Comprime la carpeta actual y crea una aplicación nueva a partir de ella. La carpeta necesita un archivo [`squarecloud.app` o `squarecloud.config`](/es/getting-started/config-file).

| Flag | Descripción |
| - | - |
| `--file <path>` | Sube un zip que ya tienes en lugar de comprimir la carpeta actual. Funcionan tanto las rutas relativas como las absolutas. |

```bash theme={"system"}
squarecloud upload
# Comprime la carpeta actual y hace deploy como una aplicación nueva.
```

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

```bash Salida 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>
```

Después de una subida correcta, la CLI escribe `ID=<appID>` en el archivo de configuración de la carpeta actual, para que los comandos siguientes sepan a qué app te refieres. Consulta [dónde se guarda el ID de la aplicación](/es/cli-reference/quickstart#dónde-se-guarda-el-id-de-la-aplicación).

Con `--json`, stdout solo contiene la aplicación creada (ID, nombre, descripción, dominio, clúster, memoria, CPU y lenguaje) como JSON; los mensajes de progreso van a stderr.

## `squarecloud commit`

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

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

Comprime la carpeta actual y la envía a una aplicación existente. El ID viene del argumento o de la línea `ID=` de tu archivo de configuración. A diferencia de otros comandos, `commit` nunca abre un selector: sin ninguno de los dos, se detiene con código de salida 1.

| Flag | Descripción |
| - | - |
| `--file <path>` | Envía un solo archivo en lugar de la carpeta actual. Un zip se extrae en la aplicación; cualquier otro archivo se escribe con su propio nombre. Funcionan tanto las rutas relativas como las absolutas. |
| `--path <dir>` | Hace commit en esta carpeta de la aplicación en lugar de su raíz. |
| `-r`, `--restart` | Reinicia la aplicación después del commit. |

```bash theme={"system"}
squarecloud commit
# Envía la carpeta actual a la app de la línea ID=.
```

```bash theme={"system"}
squarecloud commit <appID> --restart
# Envía la carpeta actual a una app específica y luego la reinicia.
```

```bash theme={"system"}
squarecloud commit --file ./config.json --path settings
# Envía un archivo a la carpeta settings de la app.
```

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

Los commits grandes no se cortan por un tiempo de espera. `commit` no tiene salida JSON.

## `squarecloud zip`

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

Comprime la carpeta actual de la misma forma que `upload` y `commit` y la guarda como `<folder name>.zip` dentro de esa carpeta, reemplazando un archivo existente con ese nombre. No necesita iniciar sesión.

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

Si no se puede escribir el zip, la CLI muestra `Couldn't zip your application.` con el motivo; si no se puede eliminar un `<folder name>.zip` anterior, lo indica. Ambos casos salen con código 1.

## Relacionado

| Comando | API | SDK de JavaScript | VS Code |
| - | - | - | - |
| `upload` | [`POST /v2/apps`](/es/api-reference/endpoint/apps/upload) | [`api.apps.create()`](/es/sdks/js/commit_and_upload) | [Subir nueva aplicación](/es/vscode-extension/features#subir-una-nueva-aplicación) |
| `commit` | [`POST /v2/apps/{app_id}/commit`](/es/api-reference/endpoint/apps/commit) | [`api.apps.commit()`](/es/sdks/js/commit_and_upload) | [Commit](/es/vscode-extension/features#hacer-commit-de-cambios-en-una-aplicación-existente) |

Para hacer deploy en cada push, consulta [Deploys desde GitHub](/es/cli-reference/github-deploys).
