javascript - que - ¿Cuándo usar Yarn sobre NPM? ¿Cuáles son las diferencias?
por que usar yarn (4)
¿Cuáles son las diferencias entre Yarn y NPM? Al momento de escribir esta pregunta, solo puedo encontrar algunos artículos en Internet que muestran cuál es el equivalente de Yarn de un comando NPM como this .
¿Tienen las mismas funcionalidades (sé que Yarn hace almacenamiento en caché local y parece que solo necesita descargar un paquete una vez) pero aparte de esto, ¿hay algún beneficio para pasar de NPM a Yarn?
ACTUALIZACIÓN: marzo de 2018 (un poco tarde ...)
Desde la versión 5,
npm
-
genera un ''archivo de bloqueo'' llamado
package-lock.json
que corrige todo su árbol de dependencias de la misma manera que lo hace el mecanismo de bloqueo de hilo (o cualquier otro), - Se ha hecho una herramienta.
-
--save
ahora está implícito paranpm i
- Mejor uso de red y caché
npm 5.7.0 introdujo aún más
el comando
npm ci
para instalar dependencias más rápidamente en un entorno de integración continua instalando solo paquetes encontrados en
package-lock.json
(informando un error si
package-lock.json
y
package.json
no están sincronizados )
Personalmente
, sigo usando
npm
.
Original
No me gusta citar directamente de los documentos, pero hacen un gran trabajo al explicar por qué, de manera tan concisa que no veo cómo resumir más las ideas.
En gran parte:
-
Siempre sabes que obtienes lo mismo en cada máquina de desarrollo
-
npm
operaciones quenpm
no lo hace, y -
Hace un uso más eficiente de la red.
-
También puede hacer un uso más eficiente de otros recursos del sistema (como RAM) .
¿Cuáles son las experiencias de producción de la gente con él? Quién sabe, es un bebé para el público en general.
TL; DR de Yehuda Katz :
Desde el primer momento, el archivo de bloqueo Yarn garantiza que ejecutar hilo repetidamente en el mismo repositorio da como resultado los mismos paquetes.
En segundo lugar, Yarn intenta tener un buen rendimiento, con un caché frío, pero especialmente con un caché cálido.
Finalmente, Yarn hace de la seguridad un valor central.
Buena publicación de blog
" NPM vs Yarn Cheat Sheet " por Gant Laborde
Versión un poco más larga del proyecto :
Rápido: Yarn almacena en caché cada paquete que descarga para que nunca más lo necesite. También paraleliza las operaciones para maximizar la utilización de los recursos para que los tiempos de instalación sean más rápidos que nunca.
Fiable: utilizando un formato de archivo de bloqueo detallado pero conciso y un algoritmo determinista para las instalaciones, Yarn puede garantizar que una instalación que funcionó en un sistema funcionará exactamente de la misma manera en cualquier otro sistema.
Seguro: Yarn usa sumas de verificación para verificar la integridad de cada paquete instalado antes de ejecutar su código.
Y de README.md :
- Modo sin conexión: si ha instalado un paquete anteriormente, puede instalarlo nuevamente sin ninguna conexión a Internet.
- Determinista: las mismas dependencias se instalarán exactamente de la misma manera en todas las máquinas, independientemente del orden de instalación.
- Rendimiento de la red: Yarn pone en cola eficientemente las solicitudes y evita las cascadas de solicitudes para maximizar la utilización de la red.
- Registros múltiples: instale cualquier paquete desde npm o Bower y mantenga el flujo de trabajo de su paquete igual.
- Resiliencia de la red: un solo error de solicitud no hará que falle la instalación. Las solicitudes se vuelven a intentar en caso de falla.
- Modo plano: resuelva versiones de dependencias que no coinciden en una sola versión para evitar crear duplicados.
- Más emojis. 🐈
Use PNPM
Beneficios de
PNPM
sobre
Yarn
y
NPM
pnpm
usa enlaces duros y enlaces simbólicos para guardar una versión de un módulo solo una vez en un disco.
Cuando use npm o Yarn, por ejemplo, si tiene 100 proyectos que usan la misma versión de lodash, tendrá 100 copias de lodash en el disco.
Con pnpm, lodash se guardará en un solo lugar en el disco y un enlace rígido lo colocará en los node_modules donde debe instalarse.
Como resultado, ahorra gigabytes de espacio en su disco y tiene instalaciones mucho más rápidas. Si desea obtener más detalles sobre la estructura única node_modules que crea pnpm y por qué funciona bien con el ecosistema Node.js, lea este pequeño artículo: ¿Por qué deberíamos usar pnpm?
¿Cómo instalar?
npm install -g pnpm
ahora instale el paquete
pnpm install -g typescript // or your desired package
Aquí está la barra de progreso que muestra el tiempo de instalación tomado por
NPM
,
YARN
y
PNPM
(una barra más corta es mejor)
Haga clic para el cheque completo Benchmark
Para más detalles, visite https://www.npmjs.com/package/pnpm
Cuando instala un paquete usando Yarn (usando yarn add packagename), coloca el paquete en su disco . Durante la próxima instalación, este paquete se usará en lugar de enviar una solicitud HTTP para obtener el tarball del registro.
Yarn viene con un práctico verificador de licencias , que puede volverse realmente poderoso en caso de que tenga que verificar las licencias de todos los módulos de los que depende.
Si está trabajando en un software propietario, en realidad no importa cuál use. Con npm, puede usar npm-shrinkwrap.js, mientras que puede usar yarn.lock con Yarn.
Para obtener más información, lea el siguiente blog.
https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/
Tratando de dar una mejor visión general para principiantes.
npm ha sido históricamente (2010) el administrador de paquetes más popular para JavaScript. Si desea usarlo para administrar las dependencias de su proyecto, puede escribir el siguiente comando:
npm init
Esto generará un archivo
package.json
.
Contiene todas las dependencias del proyecto.
Entonces
npm install
crearía un directorio
node_modules
y descargaría las dependencias (que agregó al archivo
package.json
) dentro de él.
También creará un archivo
package-lock.json
.
Este archivo se utiliza para describir el árbol de dependencias que se generó.
Permite a los desarrolladores instalar exactamente las mismas dependencias.
Por ejemplo, podría imaginarse a un desarrollador que actualiza una dependencia a v2 y luego a v3, mientras que otro actualiza directamente a v3.
npm
instala las dependencias de una manera no determinista, lo que significa que los dos desarrolladores podrían tener un directorio
node_modules
diferente que da como resultado
comportamientos diferentes
.
** npm ha sufrido una mala reputación como, por ejemplo, en febrero de 2018: se descubrió un problema en la versión 5.7.0 en el que ejecutar sudo npm en sistemas Linux cambiaría la propiedad de los archivos del sistema, rompiendo permanentemente el sistema operativo.
Para resolver esos problemas y otros, Facebook introdujo un nuevo administrador de paquetes (2016): Lanza un administrador de paquetes más rápido, más seguro y más confiable para JavaScript.
Puede agregar Yarn a un proyecto escribiendo:
yarn init
Esto creará un archivo
package.json
.
Luego, instale las dependencias con:
yarn install
Se generará una carpeta
node_modules
.
Yarn
también generará un archivo llamado
yarn.lock
.
Este archivo tiene el mismo propósito que
package-lock.json
pero en su lugar se construye utilizando un algoritmo determinista y confiable, lo que conduce a compilaciones consistentes.
Si comenzó un proyecto con
npm
, en realidad puede migrar a
Yarn
fácilmente.
el hilo consumirá el mismo
package.json
.
Consulte
Migrar desde npm
para más detalles.
Sin embargo, npm se ha mejorado con cada nuevo lanzamiento y algunos proyectos todavía usan npm sobre hilo .