Cuando estamos trabajando en varios proyectos que tienen dependencias entre sí, necesitamos poder realizar e integrar con rapidez los cambios sin tener que desplegar versiones de prueba en repositorios centralizados, con los tiempos de espera que esto conlleva.

Para agilizar este tipo de desarrollos e integraciones existen varias herramientas que se pueden utilizar en el entorno local. Aquí analizaremos Verdaccio, una alternativa gratuita a muchas ofertas comerciales de repositorios privados.

¿Qué es Verdaccio?

Verdaccio es una aplicación desarrollada en Node.js que permite crear y gestionar un registro local de forma muy sencilla a través de un interfaz web y ofrece un servicio compatible con NPM, YARM y PNPM.

Además, utiliza su propia base de datos, por lo que puede actuar como proxy del servicio NPM. Esto quiere decir que cualquier llamada para realizar la carga de un paquete NPM público pasa por el servidor Verdaccio (funcionando como una caché de llamadas al repositorio público). De esta forma se acelera la instalación de los paquetes que haya manejado previamente.

Verdaccio funciona tanto en Mac/Linux como en Windows.

Primeros pasos con Verdaccio

Dado que Verdaccio es un paquete npm, es bastante sencillo de utilizar y configurar, pudiendo hacer uso de su imagen Docker o instalarlo directamente en la propia máquina. En este post explicamos los pasos a seguir para instalar Verdaccio en tu propia máquina, pero si quieres hacer uso de la imagen Docker puedes obtener más información en la página web de Verdaccio.

Para instalar Verdaccio todo lo que necesitas hacer es ejecutar el comando npm install:

npm install -g verdaccio

La ejecución del comando verdaccio iniciará la instancia.

Ejecución del comando verdaccio

Al arrancar, se crea un pequeño repositorio por defecto y arranca un servidor en http://localhost:4873/. Desde este momento se puede usar el servicio NPM local que ofrece Verdaccio.

Si accedes a esta dirección, se mostrará la interfaz de búsqueda y administración de Verdaccio:

Interfaz de búsqueda y administración de Verdaccio.

Para instalar paquetes usando el proxy que ofrece Verdaccio puedes hacerlo ejecutándolo de la siguiente manera:

npm install moment --registry http://localhost:4873/

Configurando Verdaccio

Ahora que se encuentra funcionando en tu máquina de forma local, puedes ver que no ha sido necesario realizar ninguna configuración extra.

Si tienes curiosidad por saber dónde se encuentra guardada la configuración de Verdaccio junto con su base de datos, podrás buscar en la consola dónde se encuentra el fichero config.yaml. La ruta se muestra en consola al arrancar la aplicación de la siguiente forma:

Configuración de Verdaccio

Para saber dónde se están guardando los paquetes que descarga, basta con abrir este fichero de configuración y buscar el apartado referente a storage.

En el fichero config.yaml podrás realizar personalizaciones o configuraciones sobre el servicio que ofrece Verdaccio, por ejemplo:

Puerto de escucha del servicio.
Proxy externo.

Es importante saber que cualquier cambio que realices en este fichero de configuración necesitará que reinicies Verdaccio para que surta efecto los cambios.

Registrando un usuario

Para publicar paquetes hace falta tener un usuario dado de alta. Para ello, basta con utilizar el comando adduser, este te preguntará por un nombre de usuario, una contraseña y un correo:

npm adduser --registry http://localhost:4873/

Este usuario se utiliza para la autenticación en Verdaccio. Junto al archivo de config.yaml podrás encontrar uno recién creado (htpasswd) que se utilizará para almacenar la sesión y las credenciales.

Publicación de paquetes

Una vez has creado el usuario, para publicar un paquete en Verdaccio lo único que necesitas hacer es ejecutar el comando publish dentro del proyecto que quieras publicar:

npm publish --registry http://localhost:4873/

Para establecer por defecto el repositorio local, se ejecuta el comando set registry. De esta forma, no tendrás que especificarlo en cada publicación de paquetes:

npm set registry http://localhost:4873/

Para publicar nuevas versiones de paquetes bastará con utilizar las instrucciones version y publish:

Nuevas versiones de paquetes

Eliminación de paquetes

Eliminar paquetes publicados en el repositorio local se puede hacer de varias formas:

  1. Eliminando la carpeta del paquete en cuestión directamente desde el gestor de ficheros del sistema operativo, accediendo a la carpeta storage en la ubicación en la que esté definida.
  2. Utilizando el comando unpublish seguido del nombre del paquete que se quiere eliminar (podría ser necesario utilizar --force para que se realice la eliminación del paquete).
Eliminar paquetes repositorio

Desinstalando Verdaccio

La mecánica para desinstalar Verdaccio es igual de fácil como fue instalarlo y bastaría con ejecutar el comando npm uninstall::

npm uninstall -g verdaccio

Por último, si has configurado Verdaccio como el registro privado por defecto, deberás volver a poner el registro de npm apuntando al repositorio público de npm:

npm set registry http://registry.npmjs.org

Conclusiones

Llegados a este punto, ahora cuentas con un registro privado propio, con el cual te vas a beneficiar de tener paquetes públicos almacenados en caché. Además, también puedes publicar paquetes privados y versiones sin tener que depender de una conexión a internet.

También se facilita la gestión local de paquetes, ya que es muy sencillo añadirlos o eliminarlos (por ejemplo, fallidos o erróneos) como hemos visto anteriormente.

En resumen, Verdaccio es una buena alternativa cuando trabajes en algún proyecto en el que haya que validar cambios realizados en otros proyectos. Por ejemplo, diseñando librerías de componentes reutilizables.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.