Yarn, un nuevo gestor de paquetes JavaScript lanzado por Facebook y Google

Yarn, un nuevo gestor de paquetes JavaScript lanzado por Facebook y Google

Yarn es el nuevo instalador de paquetes JavaScript y gestor de dependencias lanzado por Facebook en colaboración con otros jugadores como Google. Introduce cambios en esa gestión de dependencias, en la ejecución de tareas y algunas mejoras de rendimiento.

BBVAOpen4U
|
28 Nov. 2016

Cuando los desarrolladores trabajan con alguna tecnología JavaScript, lo más lógico es que de forma habitual necesiten instalar nuevos paquetes en este lenguaje de programación para lanzar determinados proyectos. Para este tipo de acciones, existen algunos gestores que permiten, con una única línea de comando, la instalación sin problemas de esas librerías. Por ejemplo, npm (Node Package Manager) es el gestor de paquetes JavaScript más utilizado por los desarrolladores que usan Node.js, el entorno en tiempo de ejecución multiplataforma, de código abierto y por la capa del servidor. Node.js es una de las tecnologías que han conseguido llevar el lenguaje JavaScript de la parte del front-end al back-end.

Detrás de estos gestores de paquetes JavaScript está la idea de que los desarrolladores puedan compartir unos con otros millones de pequeñas porciones de código que son reutilizables en distintos proyectos y que evitan que cada programador tenga que perder el tiempo en la codificación de elementos básicos. Con descargar e instalar un paquete o una librería, ese proceso estaría acabado.

Entre los elementos que se incorporan y los que son propios de la programación del desarrollador existen dependencias (de alguna forma todas ellas encajan como las piezas de un motor). Los gestores de paquetes JavaScript son los que liberan al desarrollador de la ardua gestión de esas dependencias entre códigos, y centrarse en lo realmente importante: la creación de productos y servicios fiables.

Yarn, el nuevo jugador dentro del mercado

Frente a npm, posiblemente el gestor de paquetes JavaScript con más tirón dentro de la comunidad de desarrolladores JS, ha surgido alguna alternativa que puede tener cierto recorrido si miramos quiénes son sus padrinos dentro del mercado: Facebook, Google, Exponent y Tilde. La alternativa se llama Yarn y ha despertado mucha atención no sólo por sus creadores, sino también por el cambio de enfoque en la descarga e instalación de los paquetes y en su gestión de las dependencias.

Facebook usó durante años el cliente npm para la instalación y gestión de paquetes JavaScript en su código, pero reconoce que con el aumento del volumen de su código y el crecimiento del número de ingenieros y programadores que participaban en ese código, “los problemas de consistencia, seguridad y rendimiento” también se disparaban en paralelo. Esa fue la razón por la que la compañía de Menlo Park decidió desarrollar su propio gestor de paquetes JavaScript, que permitiera “gestionar nuestras dependencias con mayor fiabilidad”.

Diferencias clave entre npm y Yarn

Entre npm y Yarn existen algunas diferencias importantes que son fruto del trabajo realizado por Facebook y sus socios en este gestor de paquetes JavaScript:

  • Gestión de las dependencias: dentro del ecosistema de nodos en el que suele trabajar un gestor de paquetes JavaScript, las dependencias se sitúan en el node_modules del directorio del proyecto. En el caso de npm, el orden de instalación de los paquetes y la generación de las dependencias define la estructura de ese nodo del directorio. Por tanto, cuando un desarrollador trabaja con npm, lo más seguro es que su estructura del nodo de dependencias sea distinta al nodo de dependencias de otros programadores.

Yarn no funciona así. Este gestor de paquetes JavaScript usa ciertos ficheros de bloqueo que actúan sobre las dependencias instaladas en determinadas versiones del código, de tal forma que garantiza que el node_modules tenga una misma estructura de archivos independientemente del proyecto y los desarrolladores que hayan ido accediendo a la base de programación. Yarn genera cierta unidad en todo el proceso, aunque se produzcan cambios. De todas formas, npm también dispone del comando npm shrinkwrap, que permite bloquear determinadas versiones de los distintos paquetes y sus descendientes dentro del directorio jerárquico node_modules. El problema viene cuando se producen cambios en paquetes que ya no se encuentran dentro de lo que en npm se conoce como versionado semántico (semver).

El proceso de instalación y control que introduce Yarn tiene distintos pasos:

Resolution: Yarn resuelve las dependencias entre paquetes o librerías JavaScript haciendo solicitudes al registro y revisando cada dependencia que se encuentre ya gestionada dentro del directorio.

Fletching: después, Yarn revisa el directorio global almacenado en la memoria caché y comprueba que el paquete o librería JavaScript que se quiere descargar no fue instalado con anterioridad. Si Yarn comprueba que no lo tiene, descarga el paquete y lo instala en la caché para evitar instalar y gestionar en el futuro la misma dependencia.

Linking: el último paso de Yarn es copiar todos los archivos de la memoria caché al node_modules del directorio local para que el desarrollador pueda empezar a trabajar con el paquete JavaScript.

  • Tareas en la instalación de paquetes: cuando un desarrollador quiere instalar un nuevo paquete JavaScript, eso lanza una serie de tareas previas. En el caso de npm, la tareas son ejecutadas por cada paquete y de forma progresiva y secuencial. Eso quiere decir que primero ejecuta las tareas para la instalación del primer paquete, después del segundo y así sucesivamente. En el caso de Yarn, las tareas por paquetes se ejecutan en paralelo y eso tiene una incidencia evidente en los tiempos de rendimiento. En esta comparativa realizada por el sitio web Sitepoint pueden verse algunas diferencias de rendimiento en la instalación de los paquetes JavaScript express y gulp (con el que se gestionaron un total de 195 dependencias).
  • Línea de comandos: los comandos utilizados por Yarn y npm son distintos, desde los usados para la propia instalación del gestor hasta para la búsqueda de paquetes o la gestión de los archivos de bloqueo para las dependencias.

¿Te interesan las APIs financieras? Descubre todas las que te ofrece BBVA

 

 

¡Suscríbete!

Recibe nuestro boletín semanal. No te pierdas nuestros trucos, consejos, artículos y los eventos más innovadores.