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.
-
si tu equipo no corre
npm install
después de cadagit 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” -
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
- revertir sus cambios en
package-lock.json
stash
tus cambiospull
versión de código más reciente- correr
npm install
para todas las dependencias que necesita ser agregado - Desbloquea tus cambios.
Enfoque 2
- ejecutar la fusión
- para la resolución de conflictos, elija la estrategia “solo sus cambios” en
package-lock.json
- correr
npm install
por lo que las dependencias que desea agregar también se incluyen enpackage-lock.json
- 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.
- Arreglar el conflicto interior
package.json
- 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.