≡En resumen
- Yarn instala las dependencias de un proyecto JavaScript y guarda las versiones exactas en yarn.lock para que todo el equipo tenga la misma instalación.
- Yarn Classic (1.x) está congelado y solo recibe parches de seguridad; los proyectos nuevos deberían usar Yarn moderno (Berry).
- Plug'n'Play sustituye la carpeta node_modules por un único archivo .pnp.cjs, aunque puedes volver a node_modules con una línea de configuración.
- Frente a npm y pnpm, Yarn brilla en monorepos gracias a sus workspaces y a su control estricto de dependencias.
- Lo importante no es qué gestor eliges, sino usar uno solo por proyecto y respetar su archivo de bloqueo.
01 ¿Qué es Yarn?
Facebook lo presentó el 11 de octubre de 2016, desarrollado junto con Exponent (hoy Expo), Google y Tilde. El objetivo era resolver tres problemas que el cliente de npm de la época tenía en proyectos grandes: instalaciones lentas, resultados distintos en cada máquina y dependencia constante de la red. De ahí sus tres promesas iniciales: archivo de bloqueo, caché offline e instalación determinista. En inglés, yarn significa «hilo», un guiño a la idea de tejer las dependencias de un proyecto.
Yarn no sustituye a Node.js ni al registro de npm: se ejecuta sobre Node.js y descarga los paquetes del mismo registro público. Lo que cambia es cómo se resuelven, se guardan y se enlazan.
02 Yarn Classic vs Yarn Berry: las dos versiones de Yarn
Cuando alguien habla de Yarn puede referirse a dos productos muy distintos. Yarn Classic es la rama 1.x, la que se popularizó entre 2016 y 2019. En 2020 llegó Yarn 2, apodado Berry por el nombre de su repositorio: una reescritura completa en TypeScript que cambió la forma de instalar dependencias. Las versiones 3 y 4 continúan esa línea, y el equipo publica hoy sus novedades en el repositorio yarnpkg/berry.
| Aspecto | Yarn Classic (1.x) | Yarn moderno (2.x en adelante) |
|---|---|---|
| Estado | Congelado: solo parches de seguridad (última 1.22.22) | Desarrollo activo (rama 4.x) |
| Instalación de dependencias | Carpeta node_modules | Plug'n'Play por defecto (.pnp.cjs); node_modules opcional |
| Configuración | .yarnrc | .yarnrc.yml |
| Instalación en CI sin cambios | yarn install --frozen-lockfile | yarn install --immutable |
| Ejecutar un paquete sin instalarlo | No tiene equivalente propio (se usa npx) | yarn dlx |
| Versión de Yarn | Global en la máquina | Fijada por proyecto (packageManager en package.json) |
03 Cómo funciona Yarn: yarn.lock, caché y Plug'n'Play
package.json
Declara qué dependencias necesita el proyecto y con qué rango de versiones (por ejemplo, ^18.2.0).
yarn.lock
Registra la versión exacta resuelta de cada paquete y subdependencia. Se sube al repositorio y no se edita a mano.
Caché
Guarda los paquetes descargados para reinstalar sin volver a pedirlos a la red y para trabajar sin conexión.
Plug'n'Play (PnP)
En Yarn moderno, en lugar de copiar miles de archivos en node_modules, genera un cargador .pnp.cjs que indica a Node.js dónde está cada paquete.
Plug'n'Play es la gran diferencia de Yarn moderno. Según su documentación, evita las llamadas «dependencias fantasma» (usar en el código un paquete que no has declarado y que solo funciona porque otro lo instaló), da errores más claros y reduce el trabajo en disco. El precio es que algunas herramientas antiguas esperan una carpeta node_modules. Si alguna falla, basta con añadir nodeLinker: node-modules al archivo .yarnrc.yml para instalar como siempre.
04 Cómo instalar Yarn y comandos básicos
-
1
Instala Corepack
Corepack viene con Node.js desde la versión 14.19 hasta la 24. A partir de Node.js 25 ya no se incluye, así que se instala con npm install -g corepack.
-
2
Crea o prepara el proyecto
En un proyecto nuevo ejecuta yarn init -2. En uno existente, yarn set version stable fija la última versión estable y la anota en package.json.
-
3
Instala las dependencias
yarn install (o solo yarn) lee package.json y yarn.lock e instala todo lo necesario.
-
4
Añade o quita paquetes
yarn add paquete, yarn add -D paquete para dependencias de desarrollo y yarn remove paquete para eliminarlo.
-
5
Actualiza con control
En Yarn moderno, yarn up paquete actualiza una dependencia; en Classic, yarn upgrade. Revisa el cambio de yarn.lock antes de subirlo.
-
6
Ejecuta scripts
yarn run build, o directamente yarn build, lanza los scripts definidos en package.json.
05 Yarn vs npm vs pnpm: diferencias y cuál elegir
Los tres gestores usan el mismo registro de paquetes y el mismo package.json, así que puedes cambiar de uno a otro. Las diferencias están en cómo guardan las dependencias, en su velocidad y en el soporte para monorepos. Las tres son herramientas open source y gratuitas.
| Aspecto | npm | Yarn (moderno) | pnpm |
|---|---|---|---|
| Viene con Node.js | Sí | No (Corepack o instalación aparte) | No (Corepack o instalación aparte) |
| Archivo de bloqueo | package-lock.json | yarn.lock | pnpm-lock.yaml |
| Cómo guarda los paquetes | node_modules plano | Plug'n'Play o node_modules | Almacén global con enlaces duros y node_modules no plano |
| Espacio en disco | Una copia por proyecto | Caché compartida; PnP evita copiar | Cada versión de un paquete, una sola vez en el disco |
| Monorepos | Workspaces desde npm 7 | Workspaces muy maduros y constraints | Workspaces con pnpm-workspace.yaml |
| Ideal para | Proyectos sencillos y máxima compatibilidad | Monorepos y equipos que quieren reglas estrictas | Muchos proyectos en la misma máquina y CI rápidas |
- ✓Elige npm si quieres cero configuración y la máxima compatibilidad con tutoriales y herramientas.
- ✓Elige Yarn si trabajas en un monorepo con varios paquetes o aplicaciones y quieres workspaces y reglas estrictas.
- ✓Elige pnpm si te preocupan el espacio en disco y la velocidad de instalación en integración continua.
- ✓Si heredas un proyecto, usa el gestor que indique su archivo de bloqueo o el campo packageManager.
- ✓Documenta la elección en el README para que nadie instale con otro gestor por costumbre.
06 Yarn workspaces: monorepos para webs y productos SaaS
Un workspace es cada paquete dentro de un mismo repositorio. Con workspaces, un único yarn install instala las dependencias de todos, enlaza entre sí los paquetes internos y comparte un solo yarn.lock. Es la base de muchos monorepos: el frontal web, el panel de administración, la API y una librería de componentes compartida viven juntos y se versionan a la vez.
Un equipo que construye un producto por suscripción tiene tres piezas: la web de marketing, el panel del cliente en React y un paquete @empresa/ui con botones y formularios. Con Yarn workspaces, un cambio en un botón se prueba a la vez en la web y en el panel, sin publicar el paquete en ningún registro. Es una de las decisiones de stack que conviene tomar al principio, como explicamos en la guía sobre cómo crear un SaaS paso a paso.
07 Yarn en proyectos web reales: cuándo importa de verdad
Para el cliente final, el gestor de paquetes es invisible, pero influye en algo que sí nota: la estabilidad. Una instalación reproducible evita que una actualización silenciosa de una librería rompa la web el día del despliegue. Por eso, en el desarrollo de aplicaciones web a medida fijamos siempre un gestor y una versión por proyecto, y lo mismo ocurre con los frameworks de frontal, que se instalan y actualizan a través de él.
En productos que crecen con el tiempo, como un software por suscripción, un monorepo bien organizado con Yarn o pnpm reduce el coste de mantenimiento, porque todas las piezas comparten versiones y herramientas. Es una de las prácticas que aplicamos en el desarrollo de SaaS que hacemos para clientes y para nuestros propios productos.
Preguntas frecuentes sobre Yarn
Es un gestor de paquetes para JavaScript y Node.js. Instala las librerías que necesita un proyecto, resuelve sus dependencias y guarda las versiones exactas en yarn.lock para que todas las instalaciones sean idénticas.
Sirve para añadir, actualizar y eliminar dependencias, ejecutar los scripts del package.json y gestionar monorepos con workspaces, garantizando que todo el equipo y los servidores usen las mismas versiones.
Ambos usan el mismo registro y el mismo package.json. npm viene con Node.js y usa package-lock.json; Yarn usa yarn.lock, ofrece Plug'n'Play en lugar de node_modules y tiene workspaces y reglas más avanzadas para monorepos.
Es el nombre informal de Yarn moderno, de la versión 2 en adelante. Se lanzó en 2020 como una reescritura completa en TypeScript e introdujo Plug'n'Play y la configuración en .yarnrc.yml.
Funciona, pero está congelado: su repositorio solo acepta correcciones de seguridad y la última versión es la 1.22.22. Para proyectos nuevos conviene usar Yarn moderno, npm o pnpm.
La vía recomendada es Corepack: en Node.js 14.19 a 24 ya viene incluido, y desde Node.js 25 se instala con npm install -g corepack. Después, yarn init -2 crea un proyecto o yarn set version stable fija la versión en uno existente.
Depende de la prioridad. pnpm ahorra más disco y suele instalar muy rápido gracias a su almacén global; Yarn ofrece Plug'n'Play y herramientas muy maduras para monorepos. Ambos son buenas opciones si el equipo usa solo uno.
Sí. Es software de código abierto con licencia BSD de 2 cláusulas y no tiene versiones de pago.
Fuentes consultadas
Sobre el autor
Germán Gutiérrez
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil en LinkedIn ↗