#CómoSeHace – Configurando repositorios locales npm y bower

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.

5 comentarios » Puedes dejar tu comentario también

  1. 00

    vla2

    dijo:

    Firefox 44.0 Ubuntu x64

    Excelente articulo, me gusto mucho la parte de las referencias 🙂

    Para enriquecerlo aún más, quisiera añadir que si no realizan los siguientes pasos, tendrán el nexus instalado en vano, porque cuando estén offline, el propio nexus tratará de conectarse Siempre a Internet, aunque tenga cacheado los assets que se les está pidiendo:

    En la configuración del repositorio local, hay 2 campos con un número. Eso es un TTL que por defecto lo tiene para 1 día, por tanto, la cache local se invalida diariamente y por ende tratará de conectarse siempre a Internet. La solución es que cuando estén completamente offline, le suban los valores a estos campos a 357 000 o el equivalente en minutos a 2 semanas o 1 año como yo lo tengo.

    Para publicar tus propios paquetes hacia tu repo local y tener un repositorio NPM privado, la historia es otra. Para conocer en detalle dicha historia con imágenes descriptivas y gran detalle, puedes hacerlo en esta entrada de MyCyberAcademy

    Mis saludos, @sigfried

  2. 00

    Yurisnel

    dijo:

    Firefox 45.0 Windows 7

    Por favor como puedo acceder a https://rice.uci.cu/?p=4673
    me encuentro en la red de infomed y no tengo acceso a el…

    saludos! y Muchas gracias!

    • 00

      sigfried

      (autor) dijo:

      Google Chrome 52.0.2743.82 GNU/Linux x64

      Hola @Yurisnel, ahora mismo creo que los FTP de la universidad están fuera de servicio, pues tuvimos problemas con los cortes eléctricos, en cuanto estén funcionando voy a poner el video de @vla2 y el Nexus en el FTP para que puedas descargarlos. Saludos, sigfried.

  3. 00

    jeans manuel

    dijo:

    Firefox 49.0 Windows 8.1 x64 Edition

    hola!
    1. Crees que puedan enseñar como crear una carpeta de repositorios local desde los DVD?
    2. Luego las descargar las update desde Internet ponerlo en la misma carpeta que creaste los repos locales!

  4. 00

    CO5FB

    dijo:

    Firefox 37.0 Windows 7

    buen dia niños nesecito ayuda .este es mi problema conexion por modem Gracias. kppp(1953)/kdeui (kdelibs): Session bus not found
    To circumvent this problem try the following command (with Linux and bash)
    export $(dbus-launch)
    KCrash: Application ‘kppp’ crashing…
    KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi from kdeinit
    KCrash: Connect sock_file=/root/.kde4/socket-linux-321v/kdeinit4__0
    [1] Salida 253 kppp
    22/10/16

Deja un comentario

Tu dirección de correo electrónico nunca será compartida.