Depois de atualizar meu NPM para a versão mais recente (de 3.X para 5.2.0) e executar npm install
um projeto existente, recebo um package-lock.json
arquivo criado automaticamente.
Eu posso dizer que package-lock.json
me dá uma árvore de dependência exata, por oposição a package.json
.
A partir dessa informação, parece que package.json
é redundante e não é mais necessário.
Ambos são necessários para o NPM funcionar?
É seguro ou possível usar apenas o package-lock.json
arquivo?
Os docs no pacote-lock.json ( doc1 , doc2 faz) não mencionar nada sobre isso.
Editar :
Depois de pensar um pouco mais sobre isso, cheguei à conclusão de que, se alguém quiser usar seu projeto com uma versão mais antiga do NPM (anterior à 5.x), ainda assim instalará todas as dependências, mas com versões menos precisas (versões de patch)
fonte
Respostas:
Você precisa de ambos
package-lock.json
epackage.json
? Não .Você precisa do
package.json
? Sim .Você pode ter um projeto apenas com o
package-lock.json
? Não .Ele
package.json
é usado para mais do que dependências - como definir propriedades do projeto, descrição, informações sobre autor e licença, scripts etc. Elepackage-lock.json
é usado apenas para bloquear dependências para um número de versão específico.fonte
package-lock.json
: registra a versão exata de cada pacote instalado que permite reinstalá-los. Instalações futuras poderão criar uma árvore de dependência idêntica.package.json
: registra a versão mínima necessária para o seu aplicativo. Se você atualizar as versões de um pacote específico, a alteração não será refletida aqui.fonte
package.json
registrar a versão mínima necessária ao aplicativo e o package-lock.json registra a versão exata de cada pacote instalado, então estou tendo uma situação estranha em que um módulo está definido na versão 0.112.1 no pacote .json e 0.110.0 no pacote-lock.json ...Se sua pergunta é se o arquivo de bloqueio deve ser confirmado no seu controle de origem - deve. Será ignorado sob certas circunstâncias.
Eu achei incômodas solicitações pull e histórico de confirmação, portanto, se você vê isso mudar, faça um commit separado.
fonte
package-lock.json
parece ser uma versão mais detalhadapackage.json
, por isso é seguro ou possível usar apenas o arquivo de bloqueio.package-lock.json
controle de versão.Uma explicação mais precisa e detalhada da razão por trás da manutenção do package-lock.json pode ser encontrada aqui
fonte