El Weesify CLI
Despliega una carpeta en tu sitio web HTML con un solo comando, tráela de vuelta, comprueba qué cambió y revierte. Un solo archivo, sin paquetes que instalar: solo necesita Node.js 18 o posterior.
Instalar
Descarga el archivo y ejecútalo con Node.js. No hay nada más que instalar, y no interviene npx ni ningún registro de paquetes.
macOS y Linux
curl -fsSLo weesify.mjs https://weesify.com/developers/cli/weesify.mjs && node weesify.mjs login
Windows (PowerShell)
Invoke-WebRequest https://weesify.com/developers/cli/weesify.mjs -OutFile weesify.mjs; node weesify.mjs login
Para escribir solo «weesify» en cualquier lugar, ponlo en tu PATH (macOS y Linux):
chmod +x weesify.mjs && sudo mv weesify.mjs /usr/local/bin/weesify
weesify --version
El inicio de sesión pide un token de API. Crea uno en tu espacio de trabajo en Ajustes → Desarrolladores con los permisos sites:read, sites:write y sites:deploy. Se guarda en ~/.config/weesify/credentials.json, legible solo por ti, nunca en la carpeta de tu proyecto.
Comprobar el archivo
Versión 1.0.0, 44 KB. Compara su SHA-256 con este antes de ejecutarlo:
e98494277685934e20bdfb05c7f9fe5087db5db66d80b2365a4d3f74ed51c8af
shasum -a 256 weesify.mjs # macOS
sha256sum weesify.mjs # Linux
Get-FileHash weesify.mjs # Windows
Primer despliegue
cd my-site
weesify init # vincular esta carpeta a un sitio web (o crear uno)
weesify deploy -m "Primera versión"
weesify status # en vivo vs borrador vs esta carpeta
deploy comprime la carpeta en un ZIP en tu ordenador, la sube, deja el sitio web exactamente como esa carpeta y lo publica. La versión anterior queda a un weesify rollback de distancia. Añade --draft para actualizar solo el borrador y publicar después desde el editor.
Se excluyen automáticamente: node_modules/, .git/, .env, *.log y archivos del sistema. Añade tus propios patrones a .weesifyignore (la misma sintaxis que .gitignore). El código de servidor como .php nunca se publica.
Comandos
| Comando | Qué hace |
|---|---|
weesify login | Guardar un token de API (o leerlo desde --stdin) |
weesify whoami | El espacio de trabajo, el nombre del token y los permisos en uso |
weesify sites | Listar tus sitios web |
weesify init [--site ID | --name NAME] | Vincular una carpeta a un sitio web; escribe weesify.json (sin secretos) |
weesify deploy [dir] [-m MSG] [--draft] | Subir la carpeta y publicarla, o solo actualizar el borrador |
weesify pull [dir] [--live | --deployment ID] | Descargar el borrador, el sitio en vivo o un despliegue |
weesify status | Último despliegue, cambios del borrador, tu carpeta frente al sitio en vivo, dominios |
weesify deployments | Historial de despliegues |
weesify rollback [ID or #N] | Poner de nuevo en vivo un despliegue anterior (por defecto: el anterior) |
weesify domains [list | add | verify | remove] HOST | Conectar y comprobar dominios personalizados |
weesify open | Abrir el sitio web en tu navegador |
Cada comando acepta --json para una salida legible por máquinas, --site para elegir un sitio web y --host para un Weesify autoalojado.
CI y automatización
En CI, define el token como un secreto llamado WEESIFY_TOKEN; no hace falta ningún paso de inicio de sesión. Cada despliegue envía su propia Idempotency-Key, así que una subida reintentada nunca publica dos veces.
# GitHub Actions
- run: curl -fsSLo weesify.mjs https://weesify.com/developers/cli/weesify.mjs
- run: echo "e98494277685934e20bdfb05c7f9fe5087db5db66d80b2365a4d3f74ed51c8af weesify.mjs" | sha256sum -c -
- run: node weesify.mjs deploy dist --site ${{ vars.WEESIFY_SITE }} -m "Build ${{ github.sha }}"
env:
WEESIFY_TOKEN: ${{ secrets.WEESIFY_TOKEN }}
Un sitio web que necesita aprobación del cliente no puede ser publicado por un token hasta que se apruebe el borrador actual; el despliegue se detiene entonces con el código de salida 2.
Códigos de salida
| Código | Medio |
|---|---|
| 0 | Hecho (para deploy: el sitio web está en vivo) |
| 1 | Algo salió mal |
| 2 | Se requiere aprobación antes de publicar |
| 3 | El despliegue falló; la versión anterior sigue en vivo |
| 4 | No has iniciado sesión, o el token no tiene permiso para hacer esto |
| 5 | No se encontró en este espacio de trabajo |
| 6 | Problema de red, servidor o límite de peticiones: se puede reintentar sin riesgo |
| 64 | El comando se usó de forma incorrecta |