npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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-server

O como dependencia de desarrollo del proyecto:

npm install --save-dev @batistafull/deploy-server

Uso

Desde la raíz de tu proyecto, crea un archivo deploy.config.json (ver formato abajo) y ejecuta:

deploy-server

Opciones

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

Configuració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 caso output no 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 de dist.
  • "api/node_modules" → omite esa carpeta entera (y su contenido) dentro de api.

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-server

Si 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

  1. Carga el deploy.config.json.
  2. Determina el destino: la carpeta output, o una temporal si el FTP está activo.
  3. Si se pasa --clean (y hay output local), borra la carpeta de salida.
  4. Ejecuta el/los buildCommand.
  5. Copia cada entrada de sources → destino (aplicando exclude).
  6. Si ftp.enabled, sube los archivos por FTP/FTPS y borra la carpeta temporal.

Licencia

MIT