
Carlos Vallejo
PreguntaNo entiendo. El package-lock.json hace que cuando alguien haga git clone de algun proyecto, al hacer npm install se instalen las dependencias indicadas en el pacakge.json sin que se actualicen a la más actual?
- Si tiene el carret actualizará la versión menor, por lo que tendrás versiones como "
^
", "^5.3.3
", "^5.4.3
", etc.^5.5.3
- Si tiene la tilde actualizará la versión de parche, por lo que tendrás versiones como "
~
", "~5.2.4
", "~5.2.5
", etc~5.2.6

Christopher Andrés Guano Valencia
Sí y no. El archivo package-lock.json se asegura de instalar la versión exacta de las dependencias de un proyecto que clonas de GitHub, pero no para las dependencias como paquete.
Si intentas instalar los paquetes sin un
package.json
packages-lock.json
package.json
Lo recomendable es eliminar los símbolos, y actualizarlos manualmente o con alguna extensión que te ayude pero tú tengas el control. Te recomiendo Version lens.
Mejor te dejo este vídeo que lo explica super bien y da ejemplos. https://youtu.be/IfqX8T_g2xA

Carlos Vallejo
Entonces, supongo que package-lock.json sirve para que al hacer npm install se clone exactamente el mismo proyecto con exactamente las mismas versiones de cuando se hizo el commit en github. Y me imagino, los símbolos ^ y ~ del package.json sirve para cuando se use el comando npm update ¿Qué opinas?

Carlos Vallejo
Gracias por tu aporte, pero estuve investigando y encontré este artículo donde dice lo siguiente:
package-lock.json sencillamente evita este comportamiento general de actualizar versiones minor o fix de modo que cuando alguien clona nuestro repositorio y ejecuta npm install en su equipo, npm examinará package-lock.json e instalará la versión exacta de los paquete que nosotros habíamos instalado, ignorando así los ^ y ~ de package.json.

Christopher Andrés Guano Valencia
¡Hola! El archivo package-lock.json describe todo el árbol de dependencias de cada paquete instalado.
Cuando alguien hace fork de un repositorio, no tiene la carpeta
node_modules
npm install
package.json
Por ejemplo tenemos la version "
5.2.3
Lo recomendable es quitar estos símbolos para que todos tengan la misma versión y no haya errores.
¡Nunca pares de aprender! 🙌