No entiendo. El package-lock.json hace que cuando alguien haga git clone de algun proyecto, al hacer npm install se instalen las depende...

Carlos Vallejo

Carlos Vallejo

Pregunta
studenthace 3 años

No 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?

4 respuestas
para escribir tu comentario
    Christopher Andrés Guano Valencia

    Christopher Andrés Guano Valencia

    studenthace 3 años

    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
    te dará error, sin embargo si lo haces sin un
    packages-lock.json
    simplemente se instalarán los paquetes especificados en el
    package.json
    y después se generará el package-lock.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

    Carlos Vallejo

    studenthace 3 años

    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

    Carlos Vallejo

    studenthace 3 años

    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

    Christopher Andrés Guano Valencia

    studenthace 3 años

    ¡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
    , al hacer
    npm install
    se instalan las dependencias indicadas en el
    package.json
    con la versión indicada y más actual.

    Por ejemplo tenemos la version "

    5.2.3
    ":

    • Si tiene el carret
      ^
      actualizará la versión menor, por lo que tendrás versiones como "
      ^5.3.3
      ", "
      ^5.4.3
      ", "
      ^5.5.3
      ", etc.
    • Si tiene la tilde
      ~
      actualizará la versión de parche, por lo que tendrás versiones como "
      ~5.2.4
      ", "
      ~5.2.5
      ", "
      ~5.2.6
      ", etc

    Lo recomendable es quitar estos símbolos para que todos tengan la misma versión y no haya errores.

    ¡Nunca pares de aprender! 🙌

Curso de Gestión de Dependencias y Paquetes con NPM

Curso de Gestión de Dependencias y Paquetes con NPM

NPM es el gestor de paquetes y dependencias más usado para desarrollar con JavaScript. Administra módulos, distribuye paquetes y agrega dependencias a tus proyectos. Instala y gestiona librerías Javascript. Crea tus propias librerías y domina uno de las herramientas más importantes en el desarrollo con JavaScript.

Curso de Gestión de Dependencias y Paquetes con NPM
Curso de Gestión de Dependencias y Paquetes con NPM

Curso de Gestión de Dependencias y Paquetes con NPM

NPM es el gestor de paquetes y dependencias más usado para desarrollar con JavaScript. Administra módulos, distribuye paquetes y agrega dependencias a tus proyectos. Instala y gestiona librerías Javascript. Crea tus propias librerías y domina uno de las herramientas más importantes en el desarrollo con JavaScript.