Hola comunidad, desde hace algunos días en nuestra universidad algunos de los servidores de producción han estado fuera de servicio, como por ejemplo los de paquetes NPM y el de Bower, este último creo que inexistente pero por si alguien, como yo :), que le gusta estar inventando con Bootstrap, jQuery y todos los plugins que andan por ahí, creo que esta es una solución bastante cómoda al problema. Sin más, comencemos.

NOTA: Este artículo en gran parte fue inspirado por https://rice.uci.cu/?p=4673, como diría “el Maestro”, honor a quién honor merece, recomiendo encarecidamente que vean primero el video que @vla2 hizo que está muy bueno porque voy a partir del hecho que ya tienes un repo configurado, yo solo llevé esto un poquito más allá. Ahora sí, comenzamos :D.

1-Apuntando repo NPM hacia internet.

Bueno, en este paso lo que haremos será apuntar nuestro repo local de NPM hacia el sitio oficial que sería https://registry.npmjs.org, pero una imagen vale más que mil palabras, entonces:

npm-1

Nota: Observen como marqué la opción de utilizar los certificados de Nexus para conectarse a sistemas externos, al parecer esto es necesario, así que lo marcan y listo ;).

2-Apuntando repo Bower hacia internet.

Aquí no voy a poner la imágen para no ser redundante y cargar demasiado el sitio, pero la pantalla sería la misma la única diferencia sería que el Remote storage de este repo sería https://bower.herokuapp.com y recuerden marcar la opción del certificado.

3-Configurando npm y bower.

Las configuraciones de npm y bower se hacen en sendos ficheros llamados .npmrc y .bowerrc, estas configuraciones, en Linux, casi siempre se guardan en el directorio home del usuario, en mi caso /home/sigfried/.npmrc por ejemplo. Teniendo en cuenta esto el fichero .npmrc quedaría de la siguiente forma:

proxy=http://localhost:3128/
https-proxy=http://localhost:3128/
registry=http://localhost:8085/repository/localnpm

Utilicé las opciones de proxy por aquí, porque aunque el repo es local npm install me daba problemas.

Con el archivo .bowerrc es un poco diferente, les recomiendo leer bower-config para que vean las opciones que se le pueden poner al Bower, pero bueno, tengan en cuenta además que pueden tener un archivo .bowerrc en su proyecto o en el home, esto significa que primero Bower busca la configuración en el proyecto y luego en el home del usuario, tengan esto en cuenta para configurar sus proyectos. Entonces, el archivo quedaría así:

{
    "registry": "http://localhost:8085/repository/bowerlocal/",
    "proxy" : "http://localhost:3128",
    "https-proxy" : "http://localhost:3128",
    "resolvers" : [ "bower-nexus3-resolver" ]
}

La estructura del mismo es un JavaScript Object Notation(JSON) con las configuraciones muy parecidas al de .npmrc, pero con una sutil diferencia, si se están preguntando, qué cosa es resolvers?, ahora les digo. Pues al parecer Bower cuando va a instalar los paquetes necesita de un resolver para poder gestionar la manera en que va a obtener los paquetes, teniendo en cuenta esto en un principio Bower no sabe como comunicarse con Nexus, de ahí que necesitemos el dichoso resolver. Pero bueno, esto, por suerte, es un problema mínimo :). Para instalar el resolver simplemente ejecuten:

sudo npm install -g bower-nexus3-resolver

Entonces ya podrán hacer uso de su repositorio local de paquetes de Bower, pero, antes de poder hacer todo esto necesitamos hacer algo más.

 4-Proxificando Nexus 😉

Bueno, aquí lo que tenemos que hacer es seleccionar la opción HTTP en el panel de administración marcar HTTP y HTTPS proxy y poner aquí su proxy local, en mi caso, localhost:3128, Nexus nos dirá que no es necesario poner http:// o https:// en estos casos, el sabe cómo resolver eso :-/.

http


Y bueno, hasta aquí este artículo minimalista acerca de cómo configurar repositorios locales de npm y bower. Espero les sea de alguna ayuda, al menos hasta que se restablezcan los servicios de producción. Mientras tanto, happy coding y nos vemos en los comentarios.