Después de actualizar mi NPM a la última versión (de 3.X a 5.2.0) y ejecutar npm install
un proyecto existente, obtengo un package-lock.json
archivo creado automáticamente .
Puedo decir package-lock.json
que me da un árbol de dependencia exacto en lugar de package.json
.
Solo con esa información, parece que package.json
es redundante y ya no se necesita.
¿Ambos son necesarios para que NPM funcione?
¿Es seguro o posible usar solo el package-lock.json
archivo?
Los documentos en package-lock.json ( doc1 , doc2 ) no mencionan nada al respecto.
Editar :
Después de pensarlo un poco más, llegué a la conclusión de que si alguien quiere usar su proyecto con una versión anterior de NPM (anterior a 5.x), aún instalaría todas las dependencias, pero con versiones menos precisas (versiones de parche)
fuente
Respuestas:
¿Necesitas ambos
package-lock.json
ypackage.json
? No se .¿Necesitas el
package.json
? Sí .¿Puedes tener un proyecto solo con el
package-lock.json
? No se .Se
package.json
usa para más que dependencias, como definir propiedades del proyecto, descripción, información de autor y licencia, scripts, etc. Sepackage-lock.json
usa únicamente para bloquear dependencias a un número de versión específico.fuente
package-lock.json
: registra la versión exacta de cada paquete instalado que le permite volver a instalarlos. Las instalaciones futuras podrán construir un árbol de dependencias idéntico.package.json
: registra la versión mínima que necesita la aplicación. Si actualiza las versiones de un paquete en particular, el cambio no se reflejará aquí.fuente
package.json
registra la versión mínima que necesita la aplicación y package-lock.json registra la versión exacta de cada paquete instalado, entonces tengo una situación extraña en la que un módulo está configurado en la versión 0.112.1 en el paquete .json y 0.110.0 en package-lock.json ...Si su pregunta es si el archivo de bloqueo debe comprometerse con su control de origen, debe hacerlo. Será ignorado bajo ciertas circunstancias.
Lo encontré hinchando solicitudes de extracción e historial de confirmación, por lo que si ve que cambia, realice una confirmación por separado.
fuente
package-lock.json
parece una versión más detallada depackage.json
, por lo que es seguro o posible usar solo el archivo de bloqueo.package-lock.json
bajo control de versión.Una explicación más precisa y detallada de la razón detrás de mantener package-lock.json se puede encontrar aquí
fuente