Meu uso do npm é gerar css / js minificado / uglificado e gerar o javascript necessário nas páginas atendidas por um aplicativo django. Nos meus aplicativos, o Javascript é executado na página para criar animações, às vezes executar chamadas ajax, trabalhar dentro de uma estrutura VUE e / ou trabalhar com o css. Se o package-lock.json tiver algum controle sobre o conteúdo do package.json, poderá ser necessário que exista uma versão desse arquivo. Na minha experiência, isso não afeta o que é instalado pelo npm install ou, se o fizer, não afetou de maneira adversa os aplicativos que implanto para o meu conhecimento. Eu não uso mongodb ou outros aplicativos que são tradicionalmente thin client.
Eu removo o package-lock.json do repo porque o npm install gera esse arquivo e o npm install faz parte do processo de implantação em cada servidor que executa o aplicativo. O controle de versão do nó e do npm é feito manualmente em cada servidor, mas tenho o cuidado de que eles sejam iguais.
Quando npm install
é executado no servidor, ele altera o package-lock.json e, se houver alterações em um arquivo que é registrado pelo repositório no servidor, a próxima implantação WONT permitirá que você obtenha novas alterações da origem. Ou seja, você não pode implantar porque a solicitação substituirá as alterações feitas no package-lock.json.
Você não pode sobrescrever um package-lock.json gerado localmente pelo que está no repositório (redefinir o hard origin master), pois o npm reclamará sempre que você emitir um comando se o package-lock.json não refletir o que está em node_modules devido à instalação do npm, interrompendo a implementação. Agora, se isso indica que versões ligeiramente diferentes foram instaladas no node_modules, mais uma vez isso nunca me causou problemas.
Se node_modules não estiver no seu repositório (e não deveria estar), o package-lock.json deve ser ignorado.
Se estiver faltando alguma coisa, corrija-me nos comentários, mas o ponto em que o versionamento é retirado desse arquivo não faz sentido. O arquivo package.json possui números de versão, e presumo que esse arquivo seja o usado para criar pacotes quando a instalação do npm ocorre, como quando eu o removo, o npm install reclama da seguinte maneira:
jason@localhost:introcart_wagtail$ rm package.json
jason@localhost:introcart_wagtail$ npm install
npm WARN saveError ENOENT: no such file or directory, open '/home/jason/webapps/introcart_devtools/introcart_wagtail/package.json'
e a construção falhar, no entanto, ao instalar o node_modules ou ao aplicar o npm para construir o js / css, nenhuma reclamação será feita se eu remover o package-lock.json
jason@localhost:introcart_wagtail$ rm package-lock.json
jason@localhost:introcart_wagtail$ npm run dev
> introcart@1.0.0 dev /home/jason/webapps/introcart_devtools/introcart_wagtail
> NODE_ENV=development webpack --progress --colors --watch --mode=development
10% building 0/1 modules 1 active ...
git log
facilita o manuseio.