Trabajando con registros privados

skrigueztep

Israel Olvera

Posted on March 14, 2022

Trabajando con registros privados

El contenido presentado es orientado al ambiente de desarrollo con JS y TS, y hay una gran cantidad de recursos que pueden explicar este contenido, pero yo trataré de explicarlo de la forma más clara y sencilla que me sea posible.

Claro está que también compartiré las cosas con las que me he encontrado y te daré la solución con un fundamento detrás para que no solo hagas copy/paste

Los registros privados son muy comunes, en el entorno empresarial; cuando se requiere alojar múltiples módulos de uso interno, sin necesidad de pagar por el servicio organizacional de npm. También servicios de alojamiento de repositorios como Github y GitLab ofrecen la funcionalidad de tener esta característica.

Contenidos

Login

El login es sencillo, recordemos que por defecto siempre se va a apuntar al registro público de npm, entonces, para hacer el login basta con ejecutar:

npm login
Enter fullscreen mode Exit fullscreen mode

ó bien para apuntar a un registro privado:

npm login --registry <dirección-del-registro>
Enter fullscreen mode Exit fullscreen mode

Cambiar la configuración del registro por defecto, también es fácil:

npm config set registry <dirección-del-registro>
Enter fullscreen mode Exit fullscreen mode

con esta modificación se puede ejecutar npm login y el login será directo a la dirección del registro que se asignó

NOTA: Esta configuración solo será aplicada de forma "local", pero para que las modificaciones tomen efecto para todo el sistema recuerda usar la bandera --global

Login con 2FA activo

Cuando se hace uso del Two-Factor Authentication (2FA), se requiere un token para poder hacer un login "exitoso". Si se realiza un login sin el token y se trata de instalar alguna dependencia organizacional o de un repositorio privado; la instalación fallará.

Para lograr realizar la instalación se tiene que realizar lo siguiente:

1.- Ejecutar: npm login
2.- Obtener el token que se ha creado

Este token se genera automáticamente, se encuentra en el archivo .npmrc ubicado en el directorio $HOME

En Windows es: C:/Users/ y en Linux, si soy sincero, no lo recuerdo y no quiero obtener la respuesta de google; quiero reforzar un poco la memoria. Pero puedes obtener la ruta del directorio con $HOME.

El token es la cadena de texto dentro de las comillas después de :authToken=, este a su vez deberá corresponder de la dirección del registro a la cual está asignada.

3.- Volver a ejecutar el login pero agregando el token al final de la siguiente forma:

npm login --registry <dirección-del-registro>/:_authToken=<token>
Enter fullscreen mode Exit fullscreen mode

4.- Volver a tratar de instalar las dependencias

Instalación

Cuando se hace uso de los registros que proveen servicios como Gitlab, se requiere un token (con los permisos para acceder al registro), puedes encontrar más información en Gitlab | Package Registry.

NOTA: El token para la instalación de dependencias no es el mismo que el token que se requiere para hacer el login

Es común que en los proyectos se llegue a ver un archivo .npmrc dentro del proyecto, con la configuración para poder conocer los scopes (alcances) de las dependencias que el proyecto requiere

NOTA: Es IMPORTANTE que NUNCA, NUNCA, NUNCA se agreguen tokens o keys dentro de estos, por cuestiones de seguridad, es más conveniente que se usen variables de entorno para asignarlos.

Como se puede ver en Gitlab, hay varias formas de identificar a los módulos/dependencias de un proyecto. En la documentación se centra en el CI/CD, pero se puede realizar a nivel instancia, como se expondrá en este articulo.

Primero en el proyecto, debe de existir el fichero .npmrc, en el que se deberá identificar al registro del cual se obtendrán las dependencias, como por ejemplo:

@foo:registry=https://gitlab.example.com/api/v4/packages/npm/
//gitlab.example.com/api/v4/packages/npm/:_authToken=${TOKEN}
Enter fullscreen mode Exit fullscreen mode

NOTA: Es importante que se mantenga la sección ${TOKEN}, esto; tomará el valor de la variable que se indica entre las llaves

Ahora, deberás generar un token, como ya se mencionó este token deberá tener permisos para poder acceder al registro.

Este token puede ser usado como variable del entorno, si se ejecuta el siguiente comando:

export TOKEN=<token>
Enter fullscreen mode Exit fullscreen mode

Esto funcionará siempre en entornos *NIX, en sistemas Windows, en lo personal uso Git Bash pero desafortunadamente con esta ultima opción; esto no persiste en el entorno. En entornos Windows con sub kernel de linux, desconozco si funciona.

Hecho esto, ya se podrán instalar las dependencias desde los registros privados.

💖 💪 🙅 🚩
skrigueztep
Israel Olvera

Posted on March 14, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related