Lo borré por accidente y he realizado muchos cambios package.json
desde entonces. An npm install
o npm update
ya no genera package-lock.json
. Intenté borrar mi caché npm y mi caché nvm, pero parece que nada funciona. Lo probé en varias versiones de Node.js (6.10.3 Node.js - 3.10.10 npm es en lo que me gustaría que funcionara), y no funciona en ninguna.
¿Hay alguna forma de forzar a npm a generar el package-lock.json
archivo?
node.js
npm
package-lock.json
Gran dinero
fuente
fuente
package-lock.json
se genera automáticamente por defecto en npm a partir de v5, en las versiones anteriores, el nombre del archivo de bloqueo eranpm-shrinkwrap.json
y se generaba manualmente usandonpm shrinkwrap
command.node 8.6.0
y con élnpm 5.3.0
y funcionó..gitignore
. Accidentalmente tuvepackage-lock.json
en el de.gitignore
alguna manera y porquepackage-lock.json
no aparecía en elgit status
me estaba confundiendo.Respuestas:
De forma predeterminada,
package-lock.json
se actualiza cada vez que se ejecutanpm install
. Sin embargo, esto se puede desactivar a nivel mundial mediante el establecimientopackage-lock=false
de~/.npmrc
.Cuando la
package-lock=false
configuración global está activa, aún puede forzar lapackage-lock.json
actualización del archivo de un proyecto ejecutando:Este comando es la única forma infalible de forzar una
package-lock.json
actualización.fuente
package-lock.json
.package-lock.json
solo es compatible con npm v5 +.En npm 6.x puede usar
Según https://docs.npmjs.com/cli/install.html
fuente
npm i --package-lock-only --only=production
no parece funcionar.package-lock.json
solo para dependencias de producción. Pero si lo ejecutanpm i --only=production
, debería instalar solo las dependencias de producción. Entonces, su proceso de compilación podría verse así: instale todas las dependencias, compile la aplicación, eliminenode_modules
e instale solo las dependencias de producción.Esto se responde en los comentarios;
package-lock.json
es una función ennpm
v5 y superior.npm shrinkwrap
es cómo se crea un archivo de bloqueo en todas las versiones denpm
.fuente
package-lock.json
s no son exactamente lo mismo que los archivos shrinkwrap.npm-shrinkwrap.json
se publicarán en el registro ypackage-lock.json
no.npm shrinkwrap
generanpm-shrinkwrap.json
, pero ¿cómo se generapackage-lock.json
?--package-lock
Como varias respuestas explicaron, debe ejecutar:
npm i
PERO si no resuelve ...
Verifique la versión de su
npm
ejecutable. (Para mí fue 3.xx que no usa elpackage-lock.json
(en absoluto))npm -v
Debe ser al menos 5.xx (que introdujo el archivo package-lock.json).
Para actualizar npm en Lunix, siga estas instrucciones.
Para obtener más detalles sobre los archivos del paquete de, lea esta historia del medio .
fuente
Si su versión de npm es inferior a la versión 5 , instale la versión superior para obtener la generación automática de package-lock.json .
Ejemplo: actualice su npm actual a la versión 6.14.0
Puede ver la última lista de versiones de npm por
fuente
package-lock.json se vuelve a generar cada vez que ejecuta
npm i
.fuente
node
ynpm
. Creo que esnpm
> =5.0
ynode
> =7.0
, pero no estoy 100% seguro de eso. No me funcionanode 6.11.3
.