Con el lanzamiento de npm @ 5 , ahora escribirá un mensaje a package-lock.jsonmenos que npm-shrinkwrap.jsonya exista.
Instalé npm @ 5 a nivel mundial a través de:
npm install npm@5 -g
Y ahora, si npm-shrinkwrap.jsonse encuentra un durante:
npm install
se imprimirá una advertencia:
npm WARN read-shrinkwrap This version of npm
is compatible with lockfileVersion@1,
but npm-shrinkwrap.json was generated for lockfileVersion@0.
I'll try to do my best with it!
Así que mi conclusión es que debería reemplazar la envoltura retráctil con el package-lock.json.
Sin embargo, ¿por qué hay un nuevo formato para ello? ¿Qué puede package-lock.jsonhacer el que npm-shrinkwrap.jsonno puede?
fuente

package-lock.json(lo que no es posible), entonces, si se va a instalar la biblioteca como una dependencia de algún otro paquete, de las bibliotecaspackage-lock.jsonserían ignorados por la NGP. Sin embargo, si una biblioteca publica un archivonpm-shrinkwrap.jsone instala la biblioteca como dependencia, también instalará como dependencias secundarias las versiones exactas de todas las dependencias especificadas en la bibliotecanpm-shrinkwrap.json.npm ciexiste para asegurar la instalación depackage-lock.jsoncomo de solo lectura? (npm installmuta lapackage-lock.jsonconfusión causante y los posibles errores y no aprovecha elpackage-lock.jsonper se.)npm cimanejanpm-shrinkwrap.jsonypackage-lock.json, ¿cuál es su relevancia para esta pregunta sobre la diferencia entre los dos archivos? Además, después de leer: creo que "npm install... no aprovecha elpackage-lock.json" ha sido falso desde npm 5.4 - Creo quenpm installahora respeta su apackage-lockmenos que sea totalmente incompatible con supackage.json, en cuyo caso este último tendrá prioridad. (Pero he estado fuera del mundo de JavaScript por un tiempo, ¿me estoy perdiendo algo?)Explicación del desarrollador de NPM :
fuente
npm-shrinkwrapes para node_modules exactos ... ¿Supongopackage-lock.jsonque el bloqueo es menos que exacto? Y si es así, ¿qué no es bloqueo quenpm-shrinkwrapes bloqueo?npm-shrinkwrap. Como noto en mi respuesta, la conversión de apackage-lock.jsonanpm-shrinkwrap.jsonliteralmente se realiza simplemente renombrando el archivo; que son "el mismo código".Creo que la idea era hacer que --save y shrinkwrap ocurrieran por defecto, pero evite cualquier problema potencial con un shrinkwrap que ocurra donde no se quería. Entonces, simplemente le dieron un nuevo nombre de archivo para evitar conflictos. Alguien de npm lo explicó más a fondo aquí:
https://www.reddit.com/r/javascript/comments/6dgnnq/npm_v500_released_save_by_default_lockfile_better/di3mjuk/
La cita relevante:
fuente