specific shrinkwrap descargar node.js npm yarnpkg

node.js - descargar - ¿Cuál es la diferencia entre hryn.lock y npm''s shrinkwrap?



npm version syntax (2)

Hay alguna diferencia entre ellos

Yarn sigue un algoritmo más determinista, en comparación con npm shrinkwrap . Si estás usando Hilo, seguir usando envoltura de contracción sería contrario a la intuición

Puede encontrar esto en la documentación de yarn.lock :

Es similar al npm-shrinkwrap.json de npm, sin embargo no tiene pérdidas y crea resultados reproducibles

Sin embargo, la pregunta sigue siendo si el hilo está listo para la producción. Todavía hay un montón de errores evidentes abiertos en el repositorio de GitHub, así que esperaría un mes más o menos.

Recientemente intenté instalar mis paquetes Node con Yarn. Funciona muy bien y es mucho más rápido que NPM. El hilo genera automáticamente yarn.lock . Ya tenemos NPM shrinkwrap ( npm-shrinkwrap.json ).

¿Hay alguna diferencia entre ellos? ¿Tiene yarn.lock tiene alguna ventaja sobre npm-shrinkwrap.json?


El archivo yarn.lock es bastante similar a los archivos de bloqueo de otros gestores de paquetes, especialmente el administrador de paquetes de Rust''s Cargo, que tiene Cargo.lock . La idea de estos archivos de bloqueo es representar un conjunto consistente de paquetes que siempre debería funcionar.

npm almacena rangos de dependencia en el archivo package.json , lo que significa que cuando alguien instala su paquete, pueden obtener un conjunto diferente de dependencias, ya que puede estar ejecutando paquetes desactualizados (aunque todavía satisfacen el rango de dependencia que especificó). Tomemos, por ejemplo, a alguien que haya especificado la dependencia "foo": "^1.0.0" . Es posible que realmente hayan instalado foo v1.0.1, porque fue la última vez que npm install , pero más adelante, alguien instala su paquete y obtiene la dependencia foo v1.1.0. Esto podría romper algo inesperadamente, lo que se puede evitar si tiene un archivo yarn.lock que garantice una resolución consistente del paquete .

En cuanto a la comparación con npm shrinkwrap , la documentación lo explica muy claramente:

Es similar al npm-shrinkwrap.json de npm, sin embargo no tiene pérdidas y genera resultados reproducibles.

La documentación también recomienda el yarn.lock de yarn.lock a sus repositorios, si aún no lo hace, para que pueda cosechar los beneficios de la resolución del paquete consistente y reproducible. Esta pregunta también explica más por qué deberías hacer esto.

El comportamiento con pérdida de npm shrinkwrap se debe a los algoritmos no deterministas utilizados por npm sí; como se indica en los comentarios de otra respuesta, npm shrinkwrap > npm install > npm shrinkwrap no garantiza que produzca el mismo resultado que solo shrinkwrapping una vez, mientras que Yarn usa explícitamente "un algoritmo de instalación que es determinista y confiable" .