¿Cuáles son las diferencias entre Yarn y NPM? En el 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 este .
¿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?
javascript
npm
yarnpkg
Asha
fuente
fuente
Respuestas:
ACTUALIZACIÓN: marzo de 2018 (un poco tarde ...)
Desde la versión 5,
npm
package-lock.json
que arregla todo su árbol de dependencias de la misma manera que lo hace el mecanismo de bloqueo del hilo (o cualquier otro),--save
ahora está implícito paranpm i
npm 5.7.0 introdujo además el
npm ci
comando para instalar dependencias más rápidamente en un entorno de integración continua instalando solo los paquetes que se encuentran enpackage-lock.json
(informa un error sipackage-lock.json
ypackage.json
no están sincronizados).Personalmente , sigo usando
npm
.Original
Detesto citar directamente los documentos, pero hacen un gran trabajo al explicar por qué, lo suficientemente concisa como para no ver cómo resumir más las ideas.
En gran parte:
Siempre sabe que obtiene lo mismo en todas las máquinas de desarrollo
Paraleliza operaciones que
npm
no lo hacen, yHace un uso más eficiente de la red.
También puede hacer un uso más eficiente de otros recursos del sistema (como la RAM) .
¿Cuáles son las experiencias de producción de las personas con él? Quién sabe, es un bebé para el público en general.
TL; DR de Yehuda Katz :
Buena publicación de blog
" NPM vs Yarn Cheat Sheet " por Gant Laborde
Versión un poco más larga del proyecto :
Y del README.md :
fuente
--flat
opción que fuerza una estructura plana real donde solo se permite instalar una versión de cada dependencia, pero ¿cuál es el comportamiento predeterminado en esto? Gracias.install -g
.npm :
Hilo :
fuente
¿Qué es PNPM?
pnpm
utiliza enlaces físicos y enlaces simbólicos para guardar una versión de un módulo solo una vez en un disco. Al usar 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 fijo 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 PNPM?
¿Cómo instalar el paquete npm usando PNPM?
Beneficios de
PNPM
overYarn
yNPM
Aquí hay una barra de progreso que muestra el tiempo de instalación que tomó
NPM
,YARN
yPNPM
(la barra más corta es mejor)Haga clic para comprobar el punto de referencia completo
para obtener más detalles, visite https://www.npmjs.com/package/pnpm
fuente
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 utilizará en lugar de enviar una solicitud HTTP para obtener el tarball del registro.
El hilo viene con un práctico comprobador 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 software propietario, realmente no importa cuál utilice. 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/
fuente
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:
Esto generará un
package.json
archivo. Contiene todas las dependencias del proyecto.Luego
crearía un directorio
node_modules
y descargaría las dependencias (que agregó alpackage.json
archivo) dentro de él.También creará un
package-lock.json
archivo. 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 imaginar a un desarrollador actualizando una dependencia a v2 y luego a v3 mientras que otro se actualiza directamente a v3.npm instala las dependencias de una manera no determinista, lo que significa que los dos desarrolladores podrían tener un
node_modules
directorio diferente que resulte en 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): Yarn, un administrador de paquetes más rápido, seguro y confiable para JavaScript.
Puede agregar Yarn a un proyecto escribiendo:
yarn init
Esto creará un
package.json
archivo. Luego, instale las dependencias con:yarn install
Se
node_modules
generará una carpeta .Yarn también generará un archivo llamadoyarn.lock
. Este archivo tiene el mismo propósito que elpackage-lock.json
pero en cambio se construye usando un algoritmo determinista y confiable, lo que conduce a compilaciones consistentes.Si inició un proyecto con npm , puede migrar a Yarn fácilmente. el hilo consumirá lo mismo
package.json
. Consulte Migración desde npm para obtener más detalles.Sin embargo, npm se ha mejorado con cada nueva versión y algunos proyectos todavía usan npm sobre hilo .
fuente
La respuesta de @msanford cubre casi todo, sin embargo, me falta la parte de seguridad (Vulnerabilidades conocidas de OWASP).
Hilo
Puede verificarlos usando
yarn audit
, sin embargo, no puede arreglarlos. Este sigue siendo un problema abierto en GitHub ( https://github.com/yarnpkg/yarn/issues/7075 ).npm
Puede usar
npm audit fix
, por lo que algunos de ellos los puede arreglar usted mismo.Los dos, es decir,
npm audit
yyarn audit
tienen sus propias herramientas de integración continua. Estos son respectivamente https://github.com/IBM/audit-ci (usado, ¡funciona muy bien!) Y https://yarnpkg.com/package/audit-ci (no usado).fuente