Saltar al contenido

Eliminar `package-lock.json` para resolver conflictos rápidamente

El tutorial o código que encontrarás en este artículo es la solución más fácil y efectiva que hallamos a esta duda o problema.

Solución:

Sí, puede y afectará a todo el proyecto de muy mala manera.

  1. si tu equipo no corre npm install después de cada git pull todos ustedes están usando diferentes versiones de dependencias. Entonces termina con “¡¡pero a mí me funciona!!” y “No entiendo por qué mi código no te funciona”

  2. aunque todo el equipo corra npm install todavía no significa que todo esté bien. en algún momento puede encontrar que su proyecto actúa de manera diferente. en una parte que hace años que no cambias. y después de la depuración (probablemente, bastante dolorosa), encontrará que se debe a que la dependencia de tercer nivel se actualizó para la próxima versión principal y esto provocó algunos cambios importantes.

Conclusión: nunca borres package-lock.json. en tu caso, es mejor que hagas lo siguiente:

Enfoque 1

  1. revertir sus cambios en package-lock.json
  2. stash tus cambios
  3. pull versión de código más reciente
  4. correr npm install para todas las dependencias que necesita ser agregado
  5. Desbloquea tus cambios.

Enfoque 2

  1. ejecutar la fusión
  2. para la resolución de conflictos, elija la estrategia “solo sus cambios” en package-lock.json
  3. correr npm install por lo que las dependencias que desea agregar también se incluyen en package-lock.json
  4. termine con la confirmación de fusión de confirmación.

PS sí, para dependencias de primer nivel si las especificamos sin rangos (como "react": "16.12.0") obtenemos las mismas versiones cada vez que ejecutamos npm install. Pero no podemos decir lo mismo sobre las dependencias de más de 2 niveles de profundidad (dependencias de las que dependen nuestras dependencias), por lo que package-lock.json es muy importante para la estabilidad.

Sí, puede tener efectos secundarios negativos, tal vez no muy a menudo, pero por ejemplo, puede tenerlos en package.json "moduleX": "^1.0.0" y solías tener "moduleX": "1.0.0" en package-lock.json.

Al borrar package-lock.json y corriendo npm install podría estar actualizando a la versión 1.0.999 de moduleX sin saberlo y tal vez hayan creado un error o hayan realizado un cambio radical hacia atrás (sin seguir el control de versiones semántico).

De todos modos, ya existe una solución estándar para ello.

  1. Arreglar el conflicto interior package.json
  2. Correr: npm install --package-lock-only

https://docs.npmjs.com/configuring-npm/package-locks.html#resolving-lockfile-conflicts

Sé que es una vieja pregunta, pero para futuros buscadores, también puede usar npm-merge-driver que intenta resolver automáticamente los problemas de combinación de archivos relacionados con npm.

Solo instálalo globalmente npx npm-merge-driver install --global. Puede leer más sobre esto aquí npm-merge-driver

Editar: solo quiero advertir a las personas interesadas en usar el paquete anterior, que en algún momento puede comportarse de manera errática y difícil de eliminar. Entonces, aunque es una herramienta útil, todavía necesita algo de trabajo.

Nos puedes sustentar nuestra investigación mostrando un comentario y valorándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *