A resposta curta: sim

A resposta longa:

A finalidade deste arquivo é garantir a consistência e a reprodutibilidade das dependências em projetos que usam JavaScript.

Ele registra a versão exata de cada pacote e suas dependências, e isso garante que, ao instalar o projeto em diferentes ambientes ou por diferentes desenvolvedores, todos utilizem as mesmas versões.

Além disso, o arquivo ajuda a acelerar o processo de instalação de dependências, pois o npm não precisa resolver versões ao instalar, utilizando as informações já definidas no package-lock.json.

Havendo alterações nas dependências (como adicionar ou remover pacotes), o package-lock.json é atualizado automaticamente. Isso permite que outros desenvolvedores se beneficiem das mesmas exatas mudanças.

É essencial para manter a integridade e a previsibilidade das dependências em um projeto JS. Sem ele, por exemplo, você pode ter uma versão instalada de um pacote, e outro desenvolvedor pode ter outra versão, o que pode causar bugs inesperados e difíceis de serem identificados, pois às vezes muda apenas o último número da versão.

Exemplo: Um desenvolvedor instala react@18.4.0 e outro instala react@18.4.1, e o package-lock.json impediria que isso acontecesse.

Acrescentando à resposta, você pode conferir essa sessão da documentação oficial que discute exatamente esse tema.

Abordando esse tema de uma outra maneira, a discussão é sempre válida, porém é independente de opinião.

Reforçando, versionar o arquivo de lock é a recomendação da documentação oficial do NPM.

também penso assim. mas já tive problemas em equipe pois cada um tinha um sistema diferente pra trabalhar. Linux, Windows e Mac OS então sempre tinha algum bug ou erro ao tentar instalar as dependências que usam de binários ou comandos específicos pra cada sistema ocasionando na constante regravação do lock (gerando risco de o deploy no servidor quebrar)