yarnpkg - usar - ¿Debo confirmar el archivo yarn.lock y para qué sirve?
yarn uso (7)
¡Sí!
yarn.lock
debe registrarse para que cualquier desarrollador que instale las dependencias obtenga exactamente el mismo resultado!
Con
npm
[que estaba disponible en octubre de 2016]
, por ejemplo, puede tener una versión de
patch
(digamos 1.2.0) instalada localmente, mientras que un nuevo desarrollador que ejecute una
install
nueva podría obtener una versión diferente (1.2.1).
Yarn crea un archivo
yarn.lock
después de realizar una
yarn install
.
¿Debería esto comprometerse con el repositorio o ignorarse? ¿Para qué sirve?
Depende de cuál sea su proyecto:
- ¿Tu proyecto es una aplicación? Entonces: si
- ¿Tu proyecto es una biblioteca? Si es así: no
Una descripción más elaborada de esto se puede encontrar en este número de GitHub donde uno de los creadores de Yarn, por ejemplo. dice:
Package.json describe las versiones deseadas deseadas por el autor original, mientras que yarn.lock describe la última configuración válida conocida para una aplicación determinada.
Solo se
yarn.lock
el
yarn.lock
yarn.lock del proyecto de nivel superior.
Por lo tanto, a menos que los proyectos se usen de manera independiente y no se instalen en otro proyecto, entonces no sirve de nada comprometer
yarn.lock
-file; en cambio, siempre dependerá del
package.json
-file para transmitir qué versiones de dependencias el proyecto espera entonces.
Desde mi experiencia, diría que sí, deberíamos comprometer el archivo
yarn.lock
.
Se asegurará de que, cuando otras personas usen su proyecto, obtengan las mismas dependencias que su proyecto esperaba.
Cuando ejecuta yarn o yarn add, Yarn generará un archivo yarn.lock dentro del directorio raíz de su paquete. No es necesario que lea o comprenda este archivo, simplemente instálelo en el control de código fuente. Cuando otras personas comienzan a usar Yarn en lugar de npm, el archivo yarn.lock se asegurará de que obtengan exactamente las mismas dependencias que usted.
Uno podría argumentar que podemos lograrlo reemplazando
^
con
--
.
Sí, podemos
npm
, pero en general, hemos visto que la mayoría de los paquetes
npm
vienen con notación
^
, y tenemos que cambiar la notación manualmente para garantizar la versión de dependencia estática, pero si usa
yarn.lock
se asegurará programáticamente su versión correcta.
También como Eric Elliott dijo here
No .gitignore hilo.lock. Está allí para garantizar una resolución de dependencia determinista para evitar errores de "funciona en mi máquina".
Sí, debe registrarlo, consulte Migrar desde npm
Yarn generará un archivo yarn.lock dentro del directorio raíz de su paquete. No es necesario que lea o comprenda este archivo, simplemente instálelo en el control de código fuente.
Sí, deberías cometerlo. Para obtener más información sobre el archivo yarn.lock, consulte los documentos oficiales here
Supongo que sí, ya que Yarn versiones su propio archivo yarn.lock: https://github.com/yarnpkg/yarn
Se utiliza para la resolución de dependencia de paquete determinista.
Veo que estas son dos preguntas separadas en una. Déjame responder a ambas.
¿Debería enviar el archivo al repositorio?
Sí. Como se menciona en la respuesta de ckuijjer, se recomienda en la Guía de migración incluir este archivo en el repositorio. Siga leyendo para comprender por qué necesita hacerlo.
¿Qué es
yarn.lock
?
Es un archivo que almacena las versiones de dependencia exactas para su proyecto junto con sumas de verificación para cada paquete. Esta es la forma de hilo para proporcionar coherencia para sus dependencias.
Para comprender por qué se necesita este archivo, primero debe comprender cuál era el problema detrás del
package.json
original de
package.json
.
Cuando instale el paquete, NPM almacenará el rango de revisiones permitidas de una dependencia en lugar de una revisión específica (semver).
NPM intentará recuperar la última versión de dependencia de la dependencia dentro del rango especificado (es decir, actualizaciones de parches sin interrupciones).
Hay dos problemas con este enfoque.
-
Los autores de dependencia pueden lanzar actualizaciones de la versión del parche y, de hecho, introducir un cambio importante que afectará su proyecto.
-
Dos desarrolladores que ejecutan la
npm install
en diferentes momentos pueden obtener un conjunto diferente de dependencias. Lo que puede causar que un error no sea reproducible en dos entornos exactamente iguales. Esto podría causar problemas de estabilidad de compilación para servidores CI, por ejemplo.
El hilo, por otro lado, toma la ruta de la máxima previsibilidad.
Crea el archivo
yarn.lock
para guardar las versiones de dependencia
exactas
.
Al tener ese archivo en su lugar, yarn usará versiones almacenadas en
yarn.lock
en lugar de resolver versiones de
package.json
.
Esta estrategia garantiza que ninguno de los problemas descritos anteriormente suceda.
yarn.lock
es similar a
npm-shrinkwrap.json
que puede crearse mediante el comando
npm shrinkwrap
.
Verifique
esta respuesta
explicando las diferencias entre estos dos archivos.