@batistafull/deploy-server
v4.0.0
Published
Config-driven deploy tool that builds and copies folders, files or globs to a target path, with optional FTP/FTPS upload
Readme
@batistafull/deploy-server
Herramienta CLI de despliegue dirigida por configuración. Ejecuta los comandos de build de tu proyecto y copia las carpetas, archivos o globs que indiques a la carpeta destino, con opción de subir el resultado por FTP/FTPS.
Instalación
Global:
npm install -g @batistafull/deploy-serverO como dependencia de desarrollo del proyecto:
npm install --save-dev @batistafull/deploy-serverUso
Desde la raíz de tu proyecto, crea un archivo deploy.config.json (ver formato abajo) y ejecuta:
deploy-serverOpciones
| Opción | Descripción | Por defecto |
| ----------------- | ---------------------------------------------- | -------------------- |
| --config <path> | Ruta al archivo de configuración | deploy.config.json |
| --clean | Limpia la carpeta de salida antes de desplegar | (desactivado) |
| -h, --help | Muestra la ayuda | |
Ejemplos:
# Deploy con la config por defecto
deploy-server
# Limpiar la salida antes de copiar
deploy-server --clean
# Usar otro archivo de config
deploy-server --config configs/prod.jsonConfiguración
Crea deploy.config.json en la raíz de tu proyecto. Este archivo lo creas tú, no viene incluido en el paquete.
{
"output": "C:/inetpub/app.host",
"sources": ["dist/", "api/", "robots.txt"],
"buildCommand": ["npm install", "npm run build"],
"exclude": ["dist/.htaccess", "api/node_modules"],
"ftp": {
"enabled": false,
"host": "ftp.example.com",
"port": 21,
"secure": true,
"remotePath": "/public_html"
}
}Campos
| Campo | Tipo | Descripción |
| -------------- | --------------------- | --------------------------------------------------------------- |
| output | string | Ruta destino local (ver nota). Se ignora si el FTP está activo. |
| sources | string[] | Carpetas, archivos o globs a copiar (ver abajo). |
| buildCommand | string o string[] | Comando(s) de build. Si es un array, se ejecutan en orden. |
| exclude | string[] | Rutas a excluir, relativas al proyecto (ver abajo). |
| ftp | object | (Opcional) Configuración de subida por FTP/FTPS. Ver abajo. |
output: si es una ruta absoluta se usa tal cual (ej:C:/inetpub/app.host); si es relativa se resuelve desde la raíz del proyecto (ej:../deploy/app.host). Con FTP activo (ftp.enabled: true) no se deja copia local: los archivos se preparan en una carpeta temporal, se suben y se borra. En ese casooutputno es necesario.
sources — qué se copia
Cada entrada es una carpeta, un archivo o un glob, relativo a la raíz del proyecto:
| Entrada | Significado |
| ------------ | -------------------------------------------------------------------------------- |
| dist/ | Carpeta completa (recursivo). Su contenido se copia a la raíz del output. |
| dist/*.css | Glob: solo los .css del primer nivel de dist, copiados a la raíz del output. |
| robots.txt | Un archivo suelto, copiado por su nombre a la raíz del output. |
En todos los casos el contenido se copia a la raíz del output (se quita la carpeta base). Las carpetas se indican con / al final.
exclude — qué se omite
Cada entrada es una ruta relativa al proyecto (no un nombre suelto), scopeada a la carpeta de origen:
"dist/.htaccess"→ omite ese archivo concreto dentro dedist."api/node_modules"→ omite esa carpeta entera (y su contenido) dentro deapi.
FTP / FTPS
La subida por FTP está desactivada salvo que pongas ftp.enabled: true. Cuando está activa, output se ignora (no se genera copia local: se usa una carpeta temporal que se borra tras subir).
| Campo | Descripción |
| ---------------- | -------------------------------------------------------------------------- |
| ftp.enabled | true para activar la subida. Si está activo, output se ignora. |
| ftp.host | Host del servidor FTP (fallback de FTP_HOST). |
| ftp.port | Puerto (fallback de FTP_PORT). Por defecto 21. |
| ftp.secure | true (por defecto) usa FTPS con TLS. Pon false solo si no hay soporte. |
| ftp.remotePath | Carpeta remota destino. |
Seguridad: las credenciales se leen preferentemente de variables de entorno. No pongas la contraseña en el JSON.
# Linux / macOS
FTP_HOST=ftp.tuservidor.com FTP_USER=usuario FTP_PASSWORD=secreto deploy-server# Windows (PowerShell)
$env:FTP_HOST="ftp.tuservidor.com"; $env:FTP_USER="usuario"; $env:FTP_PASSWORD="secreto"
deploy-serverSi el FTP está habilitado y faltan FTP_HOST, FTP_USER o FTP_PASSWORD (y tampoco están en el config), el deploy falla con un error claro.
Qué hace, paso a paso
- Carga el
deploy.config.json. - Determina el destino: la carpeta
output, o una temporal si el FTP está activo. - Si se pasa
--clean(y hayoutputlocal), borra la carpeta de salida. - Ejecuta el/los
buildCommand. - Copia cada entrada de
sources→ destino (aplicandoexclude). - Si
ftp.enabled, sube los archivos por FTP/FTPS y borra la carpeta temporal.
Licencia
MIT
