¿Confirmo el bloqueo del paquete?archivo 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 archivo package-lock.json.

¿Se supone que este archivo debe mantenerse en el control de código fuente?

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

Author: rink.attendant.6, 2017-05-26

7 answers

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

package-lock.json se genera automáticamente para cualquier operación donde npm modifica el árbol node_modules, o package.json. Describe la árbol exacto que se generó, de tal manera que las instalaciones posteriores son capaces de genere árboles idénticos, independientemente de las actualizaciones de dependencias intermedias.

Este archivo es destinado a ser enviado a repositorios de código fuente, y sirve varios propósitos:

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

  • Proporcionar una facilidad para que los usuarios "viajen en el tiempo" a estados anteriores de node_modules sin tener que confirmar el directorio en sí.

  • Para facilitar una mayor visibilidad de cambios de árbol a través de diferencias de control de código fuente legibles.

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

Un detalle clave sobre package-lock.json es que no se puede publicar, y se ignorará si se encuentra en cualquier lugar que no sea el paquete de nivel superior. Comparte un formato con npm-shrinkwrap.json(5), que es esencialmente el mismo archivo, pero permite la publicación. Esto no es recomendado a menos que se implemente una herramienta CLI o de lo contrario, utilizando 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.

 794
Author: vine77,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-24 17:10:35

Sí, está destinado a ser registrado. Quiero sugerir que obtenga su propio commit único. Encontramos que añade mucho ruido a nuestras diferencias.

 68
Author: xer0x,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-16 21:18:32

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

Sí, puede confirmar este archivo. package-lock.json se genera automáticamente para cualquier operación en la que npm modifique el árbol node_modules 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 dependencias intermedias.

 12
Author: Bablu Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-06 10:44:51

Sí, la mejor práctica es comprobar en

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

  1. garantiza exactamente la misma versión de cada paquete. Esta parte es la más importante cuando se construye en diferentes entornos en diferentes momentos. Puede usar ^1.2.3 en su package.json, pero ¿cómo puede asegurarse de que cada vez que npm install recoja la misma versión en su máquina de desarrollo y en el servidor de compilación, especialmente aquellos ¿paquetes de dependencias indirectas? Bueno, package-lock.json se asegurará de que. (Con la ayuda de npm ci que instala paquetes basados en el archivo lock)
  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 la versión 6 de npm).
 12
Author: Xin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-17 03:05:26

No confirmo este archivo en mis proyectos. ¿Cuál es el punto ?

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

Aunque es cierto que nunca uso ^ en mi paquete.json para libs porque tuve malas experiencias con él:)

Saludos.

 6
Author: Deunz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-12 14:53:19

Para las personas que se quejan 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'"
 4
Author: Raza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-22 07:04:24

Nota: En primer lugar, no pude hacer lo que se sugiere a continuación solución de trabajo, pero creo que con más conocimiento sobre el tema que podemos haz que funcione. Hazme saber si eso te ayudó a ti o a mi entendimiento acerca de npm-merge-driver está mal.

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

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>

Más información sobre documentos aquí: https://www.npmjs.com/package/npm-merge-driver

 -1
Author: Syed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-24 06:21:21