Pregunta ¿Confirmo el archivo package-lock.json creado por npm 5?


npm 5 fue lanzado hoy y una de las nuevas características incluye instalaciones deterministas con la creación de un package-lock.json archivo.

¿Se supone que este archivo debe mantenerse en control de fuente?

Supongo que es similar a yarn.lock y composer.lock, se supone que ambos deben mantenerse en control de fuente.


567
2018-05-26 17:03


origen


Respuestas:


Sí, package-lock.json está destinado a ser verificado en el control de la fuente. Si está usando npm 5, puede ver esto en la línea de comando: created a lockfile as package-lock.json. You should commit this file. De acuerdo a npm help package-lock.json:

package-lock.json se genera automáticamente para cualquier operación donde npm   modifica el node_modules árbol, o package.json. Describe el   árbol exacto que se generó, de modo que las instalaciones posteriores puedan   generar árboles idénticos, independientemente de las actualizaciones de dependencia intermedia.

Este archivo está destinado a ser enviado a repositorios de origeny sirve   varios propósitos:

  • Describa una representación única de un árbol de dependencias de modo que se garantice que los compañeros de equipo, las implementaciones y la integración continua instalen exactamente las mismas dependencias.

  • Proporcionar una instalación para que los usuarios "viajen en el tiempo" a estados previos de node_modules sin tener que comprometer el directorio en sí.

  • Para facilitar una mayor visibilidad de los cambios de árboles a través de diferencias de control de fuente legibles.

  • Y optimice el proceso de instalación permitiendo que npm salte resoluciones de metadatos repetidas para paquetes instalados previamente.

Un detalle clave sobre package-lock.json es que no se puede publicar, y   será ignorado si se encuentra en cualquier lugar que no sea el paquete toplevel. Comparte   un formato con npm-shrinkwrap.json (5), que es esencialmente el mismo archivo, pero   permite publicación. Esto no se recomienda a menos que se implemente una herramienta CLI o   de lo contrario, utilice el proceso de publicación para producir paquetes de producción.

Si ambos package-lock.json y npm-shrinkwrap.json están presentes en la raíz de   un paquete, package-lock.json será completamente ignorado


684
2018-05-26 22:16



Sí, está previsto que se registre. Quiero sugerir que reciba su compromiso exclusivo. Encontramos que agrega mucho ruido a nuestros diffs.


59
2018-06-16 21:18



Puede consultar los documentos oficiales: https://docs.npmjs.com/files/package-lock.json

Sí, puedes confirmar este archivo. package-lock.json se genera automáticamente para cualquier operación donde npm modifica el node_modules árbol, o package.json. Describe el árbol exacto que se generó, de modo que las instalaciones posteriores pueden generar árboles idénticos, independientemente de las actualizaciones de dependencia intermedias.


10
2017-10-06 07:34



Sí, la mejor práctica es verificar

Estoy de acuerdo en que causará mucho ruido o conflicto al ver la diferencia. Pero los beneficios son:

  1. garantizar la misma versión exacta de cada paquete. Esto es más importante cuando se construye en diferentes entornos en un tiempo diferente. Puedes utilizar ^1.2.3 en tus package.json, pero ¿cómo puedes asegurar cada momento npm install recogerá la misma versión en su máquina de desarrollo y en el servidor de compilación? Especial esos paquetes de dependencia indirecta. Bien, package-lock.jsonse asegurará de que.
  2. mejora el proceso de instalación
  3. ayuda con la nueva función de auditoría npm audit fix (Creo que la función de auditoría es de npm versión 6)

6
2018-06-15 03:23



No comprometo este archivo en mis proyectos. Cuál es el punto de ?

  1. Se genera
  2. Es la causa de un error de integridad de código SHA1 en gitlab con compilaciones gitlab-ci.yml

Aunque es verdad que nunca uso ^ en mi package.json para libs porque tuve malas experiencias con eso :)

Saludos.


4
2017-07-12 14:53



A la gente quejándose del ruido al hacer git diff:

git diff -- . ':(exclude)*package-lock.json'

Lo que hice fue usar un alias

alias gd="git diff --ignore-all-space --ignore-space-at-eol --ignore-space-change --ignore-blank-lines -- . ':(exclude)*package-lock.json'"

2
2018-06-22 07:04



Nota: Antes que nada, no pude hacer lo siguiente sugerido   trabajo de solución pero creo que con más conocimiento sobre el tema podemos   hazlo funcionar. Avíseme si eso lo ayudó a usted o a mi comprensión   acerca de npm-merge-driver Está Mal.

Como dicen muchos aquí it will cause a lot of noise or conflict, en ese caso ejecute:

npx npm-merge-driver install -g

Y

npx npm-merge-driver install
$ git merge my-conflicting-branch
npm WARN conflict A git conflict was detected in package-lock.json. Attempting to auto-resolve.

added 1 package in 0.077s
Auto-merging package-lock.json
Merge made by the 'recursive' strategy.
 package-lock.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
$ git status
<clean>

Consulte más sobre documentos aquí: https://www.npmjs.com/package/npm-merge-driver


-1
2018-06-21 06:43