Com o lançamento do npm @ 5 , ele escreverá um a package-lock.json
menos que npm-shrinkwrap.json
já exista.
Instalei o npm @ 5 globalmente via:
npm install npm@5 -g
E agora, se um npm-shrinkwrap.json
for encontrado durante:
npm install
um aviso será impresso:
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!
Então, minha opinião é que eu deveria substituir o papel termo-retrátil pelo package-lock.json
.
No entanto, por que existe um novo formato para isso? O que pode package-lock.json
fazer o que npm-shrinkwrap.json
não pode?
fonte
package-lock.json
(que não é possível), então se você fosse para instalar essa biblioteca como uma dependência de algum outro pacote, da bibliotecapackage-lock.json
seria ignorado pelo NPM. No entanto, se uma biblioteca publica umnpm-shrinkwrap.json
e você instala a biblioteca como uma dependência, também instalará como dependências secundárias as versões exatas de todas as dependências especificadas nas bibliotecasnpm-shrinkwrap.json
.npm ci
existe para garantir a instalação dopackage-lock.json
como somente leitura. (npm install
Transforma aspackage-lock.json
causando confusão e potenciais erros e não aproveitar opackage-lock.json
per se.)npm ci
alçasnpm-shrinkwrap.json
epackage-lock.json
- o que é a sua relevância a esta pergunta sobre a diferença entre os dois arquivos? Além disso, depois de ler: acho que "npm install
... não tira proveito dopackage-lock.json
" tem sido falso desde a NPM 5.4 - acredito quenpm install
agora respeita o seu, apackage-lock
menos que seja totalmente incompatível com o seupackage.json
, nesse caso, o último terá precedência. (Mas eu estive fora do mundo JavaScript para um pouco - estou faltando alguma coisa?)Explicação do NPM Developer :
fonte
npm-shrinkwrap
for exatamente para node_modules .... Presumo quepackage-lock.json
está bloqueando menos que exato? E se sim, o que nãonpm-shrinkwrap
está bloqueando está bloqueando?npm-shrinkwrap
. Como observo na minha resposta, converter umpackage-lock.json
para umnpm-shrinkwrap.json
é literalmente acabado de renomear o arquivo; eles são "o mesmo código".Eu acho que a idéia era ter --save e shrinkwrap acontecendo por padrão, mas evite possíveis problemas com um shrinkwrap acontecendo onde não era desejado. Então, eles apenas deram um novo nome de arquivo para evitar conflitos. Alguém da npm explicou mais detalhadamente aqui:
https://www.reddit.com/r/javascript/comments/6dgnnq/npm_v500_released_save_by_default_lockfile_better/di3mjuk/
A citação relevante:
fonte