Yarn. El nuevo gestor de paquetes para JavaScript

La gente de Facebook en colaboración con algunas compañías más han sacado a la luz Yarn, un nuevo gestor de paquetes para JavaScript que sin duda será un gran competidor para NPM.

 

yarn

 

¿Y si ya tenemos NPM, para que otro gestor de dependencias?

Si bien es cierto que NPM cumple con su cometido, también es cierto que este package manager tiene sus ‘cosillas’… Una de las criticas que más se escuchan sobre NPM es que es lento, ¿cuantas veces te has ido a buscar una taza de café mientras esperas que se descarguen las dependencias que necesitas?

Pues bien, Yarn promete mejorar esta y muchas otras carencias de NPM además de traer algunas características más bastante interesantes:

  • Modo Offline: Si ya has instalado un paquete, puedes instalarlo de nuevo sin ningún tipo de conexión a Internet.
  • Determinista: Las mismas dependencias se instalan exactamente de la misma manera a través de cada máquina sin tener en cuenta el orden de instalación.
  • Network Performance: Yarn pone en cola de manera eficiente a las solicitudes de petición y evita waterfalls con el fin de maximizar la utilización de la red.
  • Múltiples Registros: Instala cualquier paquete tanto de NPM o Bower y mantén tu flujo de trabajo.
  • Network Resilience: Si una petición falla no provocará que toda la instalación falle. Las solicitudes son juzgadas de nuevo en caso de fallo.
  • Modo Flat: Resuelve conflictos versiones de las dependencias a una sola versión para evitar la creación de duplicados.

Ok, pues visto esto, !vamos a jugar un poco!

 

Instalando Yarn

Tenemos varias opciones para instalar Yarn, aquí veremos como instalarlo via Homebrew en MacOS, pero también podéis hacerlo via shell o tarball, en este enlace tenéis todas las opciones disponibles para cada plataforma.

Puedes instalarlo a través del gestor de paquetes Homebrew. Si aún no lo tienes instalado en su página encontrarás como hacerlo. Una vez instalado Homebrew tan solo necesitas tirar los siguientes comandos:

brew update
brew install yarn

¿Sencillo verdad? Ahora para confirmar que la instalación se ha completado correctamente ejecutamos el siguiente comando:

yarn --version

 

Utilizando Yarm

Ahora que ya lo tenemos instalado podemos comenzar a utilizarlo. Como verás aunque existen algunas diferencias con NPM te resultará familiar. Estos son algunos de los comandos más utilizados:

Comenzando un nuevo proyecto:

yarn init

Similar al comando de NPM. Este comando generará un archivo package.json el cual contendrá toda la info relativa a nuestra aplicación al igual que ocurre con el generado con NPM.

{
  "name": "my-new-yarn-project",
  "version": "0.0.1",
  "description": "My New Yarn Project description.",
  "main": "index.js",
  "repository": {
    "url": "https://example.com/your-username/my-new-yarn-project",
    "type": "git"
  },
  "author": "Your Name <you@example.com>",
  "license": "MIT"
}

Instalar dependencias:

yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]

Similar a los comandos npm i --save o npm i --save-dev. Este comando instalará las dependencias que indiquemos para nuestro proyecto y las integrará en nuestro archivo de confió¡duración package.json.

{
    "name": "my-new-yarn-project",
    "dependencies": {
+     "package": "^1.0.0"
    }
}

Actualizar dependencias:

yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]

NPM no tiene ningún comando aunque si existe una librería para esto; npm-check-updates.

{
    "name": "my-package",
    "dependencies": {
-     "package": "^1.0.0"
+     "package": "^2.0.0"
    }
}

Eliminar dependencias:

yarn remove [package]

Basicamente igual al comando de NPM ppm uninstall.

{
    "name": "my-package",
    "dependencies": {
-     "package": "^1.0.0"
    }
}

Instalar todas las dependencias de un proyecto:

yarn

// o

yarn install

Conclusión

La verdad es que no se hasta que punto va a ser positiva la llegada de Yarn, hasta el momento me da la sensación de que está generando más ansiedad y revuelo que otra cosa. En cualquier caso recomendaría tomarnos las cosas con calma si estáis pensando mover algún proyecto a Yarn.

He de decir que aún no he tenido la oportunidad de probarlo a fondo, a así que si alguno lo habéis trasteado más a fondo espero vuestros comentarios y opiniones ahí abajo.

Hasta la próxima!