Verdaccio es un registro NPM ligero, privado y autoalojable diseñado para facilitar el desarrollo de paquetes en entornos controlados.
Es una herramienta muy útil en equipos que desarrollan librerías internas y quieren compartirlos entre ellos, sin exponerlos a un registro en NPM.
Verdaccio actúa como un proxy inteligente que almacena dependencias descargadas, además de añadir nuestros propios paquetes privados.
Además, nos permite un mayor control sobre nuestros desarrollos, al reducir la dependencia de los repositorios de NPM (por ejemplo, porque tenemos un corte de internet).
En resumen
- Necesitas publicar paquetes internos sin exponerlos al registro en NPM
- Quieres acelerar las instalaciones mediante caching de dependencias
- Trabajas en entornos con limitaciones de conexión a internet
Instalación y configuración
Para instalar Verdaccio en simplemente tenemos que hacer
npm install -g verdaccio
Ahora podemos ejecutarlo
verdaccio
Veremos por consola la información del arranque de Verdaccio, como la carpeta de configuración, etc.
Por defecto, Verdaccio escucha en http://localhost:4873
. Podéis abrir la URL desde el navegador, y veréis el UI del panel de control de la aplicación.
Si necesitas ejecutar Verdaccio de forma continua (en general, si), puedes usar soluciones como PM2, Forever, o usarlo en formato Docker
Configuración básica config.yaml
El archivo de configuración principal de Verdaccio se encuentra en
- Windows: C:\Users\Luis\AppData\Roaming\verdaccio\config.yaml
- Linux ~/.config/verdaccio/config.yaml
Aquí tenéis un montón de parámetros. Pero una versión (muy) resumida es algo así,
storage: ./storage # Ruta de almacenamiento
plugins: ./plugins # Directorio de plugins
auth:
htpasswd:
file: ./htpasswd # Autenticación básica
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@myorg/*':
access: $authenticated
publish: $authenticated
'**':
access: $all
proxy: npmjs
Secciones clave:
storage
: Directorio para paquetes privados.uplinks
: Configuración de registros remotos (ej. npmjs).packages
: Permisos por patrón de paquete.
Uso con NPM
Ahora vamos a ver como configurar NPM para usar Verdaccio como Proxy. Para ello, hacemos esto,
npm set registry http://localhost:4873
Puedes restaurar el registro de npm al predeterminado ejecutando:
npm set registry https://registry.npmjs.org/
Con esto, hemos configurado a NPM para que busque en el servidor de Verdaccio. Ahora cuando NPM acceda a un paquete, antes pedirá la información a Verdaccio.
npm install lodash # Primero busca en Verdaccio, luego en npmjs
Verdaccio buscará en su cache, y en sus respositorios privados. Y, si no encuentra un paquete, hará una petición a los repositorios de NPM.
Alternativamente, también puedes crear un fichero .npmrc
en tu proyecto, y sobreescribir el registro añadiendo esta linea
registry=http://localhost:4873
Publicar un paquete privado
Para añadir un paquete privado a nuestro repositorio de Verdaccio hacemos lo siguiente
Inicia sesión (crea usuario si es primera vez):
npm adduser --registry http://localhost:4873
Publicamos el paquete
npm publish --registry http://localhost:4873
::::