Para modificação npm node_modules árvore ou qualquer package.json de ação, um package-lock.json será gerado automaticamente. Ele descreve exatamente a árvore que é gerada para que as instalações subsequentes possam gerar a mesma árvore, independentemente das atualizações intermediárias de dependência.
Este arquivo é destinado a ser submetido ao repositório de código-fonte e está disponível para vários fins:
Descreve uma única representação da árvore de dependências para garantir que colegas de equipe, implantações e integração contínua garantam que as mesmas dependências estejam instaladas.
Forneça aos usuários uma ferramenta para "avançar" para um estado node_modules anterior sem precisar comprometer o diretório em si.
Facilitar maior visibilidade das mudanças em árvores por meio de diferenças legíveis no controle de versão.
E otimizar o processo de instalação permitindo que o npm pule a resolução duplicada de metadados dos pacotes previamente instalados.
Um detalhe chave sobre package-lock.json é que não pode ser lançado e será ignorado se for encontrado em qualquer lugar fora do pacote de primeira linha. Ele compartilha o formato com npm-shrinkwrap.json, é basicamente o mesmo arquivo, mas permite publicação. Isso não é recomendado, a menos que você implante uma ferramenta de CLI ou use o processo de lançamento para produzir um pacote de produção.
Se tanto package-lock.json quanto npm-shrinkwrap.json existirem no diretório raiz de um pacote, package-lock.json serão completamente ignorados.
Link original: https://docs.npmjs.com/files/package-lock.json
Desde o lançamento do npm 5.x, o papel do bloqueio 5.6.0 mudou muitas vezes, e agora muitos pequenos textos brancos na Internet estão presos na tradução anterior do documento.
Atualizei do npm3.x para o npm5, mas descobri que o fenômeno ao executar 'npm i' não era consistente com o artigo de divulgação científica na Internet.
É mencionado que, não importa como package.json arquivo seja modificado, se o npm i for executado repetidamente, o npm será baixado de acordo com as informações de versão descritas no arquivo de bloqueio.
Também é mencionado que, ao repetir o npm i, o npm ignora as informações do bloqueio e baixa o módulo de atualização de acordo com as informações de versão semântica do pacote no package.json (o bloqueio parece ser inútil).
**De acordo com as informações, as regras do NPM I mudaram três vezes desde o lançamento do NPM 5.0. **
1. Versão NPM 5.0.x, não importa como o package.json mude, o NPM I será baixado de acordo com o arquivo de bloqueio
package-lock.json arquivo não atualizado após package.json arquivo ser alterado · Edição #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Esse problema reclama desse problema, obviamente troquei o package.json manualmente, por que você não me dá um pacote de upgrade! E então isso leva à questão da 5.1.0...
2. Após a versão 5.1.0, a instalação do npm ignorará o arquivo de bloqueio para baixar a versão mais recente do npm
Então alguém levantou essa questão: por que o bloqueio de pacotes está sendo ignorado? · Edição #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 A reclamação acabou evoluindo para as regras após a versão 5.4.2.
3. Após a versão 5.4.2, por que o bloqueio de pacotes está sendo ignorado? · Edição #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
De forma geral, se o package.json for alterado e o package.json for diferente do arquivo de bloqueio, o npm baixará o pacote mais recente de acordo com o número de versão e o significado semântico do pacote ao executar o 'npm i', e o atualizará para lock.
Se ambos estiverem no mesmo estado, então executar o npm i vai baixar de acordo com o lock, independentemente de a versão real do pacote ser nova ou não.
|