# Instalación y versiones

Paquete npm, binarios por plataforma, actualización y compilación desde Zig.

Consulta las versiones, cambios y requisitos en [Framework 4.0 y CLI 1.2](/es/docs/guides/releases/).


<span class="section-anchor" id="section-1"></span>

## Usar la distribución npm

```bash
npm install -g @wu-framework/cli@1.2.0
wu --version
wu --help
```

El paquete publica el comando `wu` mediante `bin/wu.js` y declara Node `>=20`. El launcher no compila Zig al instalar: busca un binario ya empaquetado para la plataforma. Las dependencias de las aplicaciones se instalan después, dentro de un proyecto, mediante `wu install`.

Para una invocación temporal del paquete puede utilizarse el ejecutor de npm:

```bash
npx @wu-framework/cli@1.2.0 --version
```

Esta invocación sigue requiriendo el entorno de Node/npm y puede consultar el registro. No equivale a ejecutar directamente el binario.

<span class="section-anchor" id="section-2"></span>

## Plataformas seleccionadas por el launcher

| Plataforma de Node | Arquitectura | Archivo esperado en `bin/` |
| --- | --- | --- |
| `win32` | `x64` | `wu-win32-x64.exe` |
| `linux` | `x64` | `wu-linux-x64` |
| `linux` | `arm64` | `wu-linux-arm64` |
| `darwin` | `x64` | `wu-darwin-x64` |
| `darwin` | `arm64` | `wu-darwin-arm64` |

La release publica seis paquetes: el launcher y cinco `@wu-framework/cli-<os>-<cpu>` opcionales, fijados exactamente a `1.2.0`. npm selecciona la plataforma; Windows ARM64 utiliza el binario x64. El launcher verifica versión y SHA-256 con `bin/SHA256SUMS`. Esta release mantiene también los cinco binarios dentro del paquete raíz como fallback.

En Unix, si el sistema rechaza el binario con `EACCES`, el launcher intenta corregir el permiso de ejecución y reintenta una vez. En Windows, sus invocaciones internas de npm pasan por `npm.cmd` mediante el intérprete del sistema.

Los binarios Linux son estáticos musl y funcionan también en Alpine. La release usa ReleaseSafe y Zig `0.16.0` exacto. Si faltan opcionales, reinstala con `npm install -g @wu-framework/cli@1.2.0 --include=optional`; `wu update` ya añade esa opción. Una combinación no soportada, versión de paquete incorrecta o checksum distinto termina con diagnóstico y salida `1`.

<span class="section-anchor" id="section-3"></span>

## Actualizar

```bash
wu update
```

El launcher consulta `@wu-framework/cli@latest`, valida la versión recibida y compara SemVer. Si es superior, ejecuta una instalación global de esa versión exacta. Si no puede consultar npm o instalar, devuelve 1. No cambia dependencias del framework dentro de proyectos.

El aviso pasivo de actualización usa una caché de 24 horas, incluso para consultas fallidas. `wu update` consulta de nuevo sin esperar esa caché. La variable `WU_DISABLE_UPDATE_CHECK=1` o un entorno con `CI` omiten el aviso pasivo; no desactivan una actualización pedida explícitamente.

```powershell
$env:WU_DISABLE_UPDATE_CHECK = '1'
wu --version
```

Ejecutar `wu.exe update` directamente imprime que la actualización pertenece al launcher y termina con 1. Para actualizar usa el comando instalado por npm.

Actualizar la CLI no cambia el proyecto: continúa con `wu upgrade --dry-run`, revisa la migración a Framework 4, aplica con `wu upgrade --yes` y ejecuta `wu install`. [Dependencias y migración](/es/docs/cli/dependencies/) explica pins, backups, codemods y códigos para CI.

<span class="section-anchor" id="section-4"></span>

## Construir desde el código

`build.zig.zon` exige Zig **0.16.0** como mínimo. El paquete Zig no declara dependencias externas y construye un ejecutable enlazado con libc.

```bash
zig build -Doptimize=ReleaseSafe
zig build test --summary all
zig build run -- --version
npm test
```

El paso `run` transmite los argumentos posteriores a `--`. `npm test` verifica invariantes y pruebas Node del launcher/compilador; es una suite diferente de los bloques de prueba Zig. Compilar no sustituye las pruebas de navegador sobre una aplicación generada.

Para mantenedores: `npm run build:binaries` genera las cinco plataformas y sus checksums. `node scripts/publish.mjs` ejecuta verificaciones y simula la publicación de los seis paquetes; solo `--yes` publica. Exige árbol limpio, versiones coherentes y binarios válidos, y publica las plataformas antes que el launcher. `npm publish` directo se rechaza. Este procedimiento es para distribuir la CLI, no para desplegar una app.

<span class="section-anchor" id="section-5"></span>

## Diagnóstico de instalación

| Síntoma | Comprobación |
| --- | --- |
| `wu` no se reconoce | Comprueba la instalación npm y que su directorio de ejecutables esté en PATH |
| `no usable executable` | Comprueba el binario empaquetado o construye el checkout con Zig |
| Versión inesperada | Ejecuta `wu --version` y verifica qué ejecutable resuelve el shell |
| Compilador de Vue/Svelte ausente | Ejecuta `wu install` dentro del proyecto y revisa las dependencias de la microapp |
| La actualización no llega al registro | Revisa la conectividad y configuración npm; el aviso pasivo no bloquea el comando solicitado |

<span class="section-anchor" id="section-6"></span>

## Referencia de implementación

- `wu-cli/package.json`
- `wu-cli/bin/wu.js`
- `wu-cli/scripts/build-all.mjs`
- `wu-cli/scripts/publish.mjs`
- `wu-cli/scripts/test-package.mjs`
- `wu-cli/tests/bin-wu.test.cjs`