¿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.
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 árbolnode_modules
, opackage.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
ynpm-shrinkwrap.json
están presentes en la raíz de un paquete,package-lock.json
será completamente ignorado.
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.
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.
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:
-
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 supackage.json
, pero ¿cómo puede asegurarse de que cada vez quenpm 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 denpm ci
que instala paquetes basados en el archivo lock) - mejora el proceso de instalación.
- 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).
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 ?
- Se genera
- 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.
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'"
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
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