npm-registro-privado-verdaccio

Qué es Verdaccio y cómo usarlo como registro NPM privado

  • 2 min

Verdaccio es un registro NPM ligero, privado y autoalojable diseñado para facilitar el desarrollo de paquetes en entornos controlados.

verdaccio-npm

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.

verdaccio-arquitectura

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.

verdaccio-screenshot

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  

::::