Para modificaciones npm node_modules árbol o cualquier package.json de acción, se generará automáticamente un package-lock.json. Describe el árbol exacto que se genera para que las instalaciones posteriores puedan generar el mismo árbol, independientemente de las actualizaciones intermedias de dependencias.
Este archivo está destinado a ser enviado al repositorio de código fuente y está disponible para diversos fines:
Describe una única representación del árbol de dependencias para garantizar que los compañeros, despliegues e integración continua aseguren que se instalen exactamente las mismas dependencias.
Proporciona a los usuarios una herramienta para "avanzar" a un estado de node_modules anterior sin tener que comprometer el propio directorio.
Facilitar una mayor visibilidad de los cambios en el árbol mediante diferencias legibles en el control de versiones.
Y optimizar el proceso de instalación permitiendo que npm omita la resolución duplicada de metadatos de los paquetes previamente instalados.
Un detalle clave de package-lock.json es que no puede ser publicado y será ignorado si se encuentra en cualquier lugar fuera del paquete de primera categoría. Comparte el formato con npm-shrinkwrap.json, básicamente es el mismo archivo pero permite publicar. Esto no se recomienda a menos que despliegues una herramienta CLI o utilices el proceso de lanzamiento para producir un paquete de producción.
Si tanto package-lock.json como npm-shrinkwrap.json existen en el directorio raíz de un paquete, package-lock.json serán ignorados por completo.
Enlace original: https://docs.npmjs.com/files/package-lock.json
Desde el lanzamiento de npm 5.x, el papel del bloqueo 5.6.0 ha cambiado muchas veces, y ahora muchos textos pequeños en blanco en Internet están atascados en la traducción anterior del documento.
Actualicé de npm3.x a npm5, pero descubrí que el fenómeno al ejecutar 'npm i' no era consistente con el artículo de divulgación científica de Internet.
Se menciona que, independientemente de cuánto se modifique package.json archivo, si npm i se ejecuta repetidamente, npm se descargará según la información de versión descrita en el archivo de bloqueo.
También se menciona que al repetir npm i, npm ignora la información del bloqueo y descarga el módulo de actualización según la información de versión semántica del paquete en el package.json (el bloqueo parece ser inútil).
**Según la información, las reglas de NPM I han cambiado tres veces desde el lanzamiento de NPM 5.0. **
1. Versión NPM 5.0.x, cambie el package.json, NPM I se descargará según el archivo de bloqueo
package-lock.json archivo no actualizado después de que package.json archivo se haya cambiado · Número #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Este problema se queja de este problema, obviamente cambié el package.json manualmente, ¿por qué no me das un paquete de mejoras? Y luego lleva al problema de la 5.1.0...
2. Después de la versión 5.1.0, la instalación de npm ignorará el archivo de bloqueo para descargar la última versión de npm
Entonces alguien planteó esta cuestión: ¿por qué se está ignorando el bloqueo de paquete? · Número #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 La queja evolucionó finalmente hacia las reglas después de la versión 5.4.2.
3. Después de la versión 5.4.2, ¿por qué se ignora el bloqueo de paquete? · Número #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
A grandes rasgos, si el package.json se cambia y el package.json es diferente del archivo de bloqueo, npm descargará el último paquete según el número de versión y el significado semántico del paquete al ejecutar 'npm i', y lo actualizará a bloqueo.
Si ambos están en el mismo estado, entonces ejecutar npm descargaré según el bloqueo, independientemente de si la versión real del paquete es nueva o no.
|