Introducción
Yarn y NPM son dos de los administradores de paquetes de Node.js más populares. Permiten descargar, instalar y administrar paquetes cuando se desarrolla en JavaScript.
En este tutorial, compararemos Yarn y NPM, consideraremos su rendimiento, facilidad de uso, seguridad y las funciones que brindan.

Hilo vs. NPM:Definiciones
Yarn (otro negociador de recursos más) y NPM (Administrador de paquetes de nodos) son administradores de paquetes utilizados para la codificación de JavaScript. Trabajan con Node.js , que sirve para ayudar a los usuarios a desarrollar y ejecutar código JavaScript fuera de un navegador web.
Node.js utiliza una gran cantidad de paquetes y bibliotecas de código abierto para que la codificación sea más sencilla y eficiente. Los administradores de paquetes como Yarn y NPM permiten a los usuarios instalar, administrar, actualizar y eliminar fácilmente paquetes, bibliotecas y dependencias.
¿Qué es el hilo?
Facebook desarrolló Yarn en 2016 como reemplazo de NPM. Fue diseñado para ofrecer funciones más avanzadas de las que NPM carecía en ese momento (como el bloqueo de versiones) y crear un producto más seguro, estable y eficiente.
Sin embargo, desde que se lanzó Yarn, NPM ha agregado varias características cruciales. En su estado actual, Yarn ahora es más una alternativa a NPM que un reemplazo.
¿Qué es el MNP?
NPM es el administrador de paquetes predeterminado para Node.js con una herramienta CLI que ayuda a instalar, administrar y eliminar paquetes de Node.js. También permite a los usuarios compartir paquetes Node.js de código abierto.
Hilo versus NPM:Comparación
A continuación se muestra un resumen de algunas de las similitudes y diferencias entre Yarn y NPM.
Instalación
Comenzaremos comparando el proceso de instalación de Yarn y NPM:
Hilo
Para comenzar a usar Yarn, debe instalarlo con el instalador MSI del sitio web oficial o un administrador de paquetes como Chocolatey, Scoop CLI o el mismo NPM. Obtenga más información en nuestra guía para instalar Yarn en Windows e instalar Yarn en Ubuntu 18.04.
NPM
NPM se incluye de forma predeterminada con la instalación de Node.js y no requiere ningún paso adicional para instalar. Para obtener más información sobre la instalación de Node.js y NPM, consulte una de nuestras guías:
- Cómo instalar Node.js y NPM en Ubuntu 18.04 y 20.04
- Cómo instalar Node.js y NPM en CentOS 7
- Cómo instalar Node.js y NPM en Windows
- Cómo instalar Node.js y NPM en Mac
Dependencias
Hilo
La versión 1 de Yarn y NPM administran las dependencias de manera muy similar. Ambos almacenan metadatos del proyecto en package.json archivo, ubicado en node_modules carpeta dentro del directorio del proyecto.
A partir de la versión 2, Yarn ya no usa los node_modules carpeta para realizar un seguimiento de las dependencias. En su lugar, Yarn 2.0 utiliza el Plug'n'Play característica, que genera un único .pnp.cjs expediente. Este archivo contiene un mapa de la jerarquía de dependencias de un proyecto.
Hilo utiliza el yarn
Comando para instalar dependencias. Instala dependencias en paralelo, lo que le permite agregar varios archivos al mismo tiempo.
La instalación de dependencias crea automáticamente un archivo de bloqueo que guarda la lista exacta de dependencias utilizadas para el proyecto. Con Yarn, este archivo se llama yarn.lock .
NPM
NPM instala dependencias usando npm install
dominio. Las dependencias se instalan secuencialmente, una tras otra.
NPM también crea un archivo de bloqueo de versión llamado package-lock.json . Yarn también es compatible con package-lock.json archivos, lo que permite a los usuarios migrar datos de versión de NPM a Yarn.
Velocidad y rendimiento
Como se mencionó anteriormente, mientras NPM instala los paquetes de dependencia secuencialmente, Yarn se instala en paralelo. Debido a esto, Yarn funciona más rápido que NPM al instalar archivos más grandes.
Ambas herramientas también ofrecen la opción de guardar archivos de dependencia en la memoria caché sin conexión. Esto permite a los usuarios instalar dependencias incluso si están desconectados.
Además, a partir de la versión 2, Yarn utiliza la instalación cero rasgo. Esta función toma el mapa de dependencias de .pnp.cjs y lo utiliza para realizar una instalación de dependencia fuera de línea prácticamente sin retrasos.

Seguridad
Hilo
Yarn realiza una verificación de seguridad como un proceso en segundo plano mientras descarga paquetes. Utiliza la información de la licencia del paquete para garantizar que no descargue scripts maliciosos ni provoque conflictos de dependencia.
Ambas herramientas utilizan protocolos de cifrado para garantizar una transferencia de datos segura. Yarn verifica los paquetes con suma de verificación, mientras que NPM usa SHA-512 (algoritmo hash seguro) almacenado en package-lock.json archivo.
NPM
Las amenazas a la seguridad eran un problema importante en las primeras versiones de NPM. A partir de la versión 6, NPM realiza una auditoría de seguridad cada vez que instala un paquete. Esto ayuda a prevenir vulnerabilidades y garantiza que no haya dependencias conflictivas.
También puede ejecutar una auditoría manual utilizando la npm audit
dominio. Si NPM encuentra vulnerabilidades, use npm audit fix
debería resolver los problemas.
Facilidad de uso
Tanto Yarn como NPM son relativamente fáciles de usar, especialmente considerando que comparten varios comandos. La salida del comando generalmente es fácil de leer y comprender, aunque puede volverse menos distinguible visualmente cuando se instala una gran cantidad de paquetes.
Ambos administradores de paquetes ofrecen un modo interactivo que ayuda a los usuarios a configurar nuevos proyectos. En Yarn, este modo está habilitado de forma predeterminada, mientras que NPM requiere la npm-upgrade paquete para habilitar la interactividad.

Características
Yarn y NPM tienen varias características clave en común:
- Generación de archivos de bloqueo: Ambos administradores de paquetes crean automáticamente un archivo de bloqueo de versión. Con Yarn, este archivo se llama yarn.lock , mientras que NPM nombra el archivo package-lock.json .
- Uso de espacios de trabajo: Tanto Yarn como NPM admiten espacios de trabajo, lo que le permite usar un solo repositorio para administrar las dependencias de varios proyectos.
- Scripts remotos: Tanto NPM como Yarn le permiten ejecutar scripts de forma remota, utilizando
npx
comando en NPM y elyarn dlx
comando en Yarn.
Las funciones son exclusivas de Yarn:
- Plug'n'Play: En lugar de usar node_modules carpeta, Yarn genera un solo .pnp.cjs archivo que mapea las dependencias del proyecto. Esto permite árboles de dependencia más optimizados y un inicio de proyecto e instalación de paquetes más rápidos.
- Cero instalaciones: Esta función está relacionada con Plug'n'Play , utilizando .pnp.cjs archivo para mapear paquetes almacenados en el caché fuera de línea. Esto le permite acceder e instalar paquetes almacenados casi sin demora.
- Verificación de licencia: Yarn cuenta con un verificador de licencias integrado al descargar e instalar paquetes.

Comandos
La siguiente tabla proporciona una descripción general de algunos de los comandos más utilizados para NPM e Yarn:
Comando | NPM | Hilo |
---|---|---|
Inicializar un proyecto | npm init | yarn init |
Ejecutar pruebas para el paquete actual | npm test | yarn test |
Buscar paquetes obsoletos | npm outdated | yarn outdated |
Publicar un paquete | npm publish | yarn publish |
Ejecutar un script | npm run | yarn run |
Administrar caché de paquetes local | npm cache clean | yarn cache clean |
Iniciar sesión o cerrar sesión | npm login/logout | yarn login/logout |
Instalar dependencias | npm install | yarn |
Instalar paquetes | npm install [package name] | yarn add [package name] |
Desinstalar paquetes | npm uninstall [package name] | yarn remove [package name] |
Administrador de actualizaciones | npm update | yarn upgrade |
Paquetes de actualización | npm update [package name] | yarn upgrade [package name] |
Instalar paquetes globalmente | npm install --global [package name] | yarn global add [package name] |
Desinstalar paquetes globalmente | npm uninstall --global [package name] | yarn global remove [package name] |
Actualización de dependencia interactiva | npm run upgrade-interactive | yarn upgrade-interactive |
Ejecutar paquete de forma remota | yarn dlx | |
Comprobar licencias | yarn licenses ls |