This content originally appeared on DEV Community and was authored by Ricardo Mello
Versão resumida:
- Sim, você deve commitar
- Sempre faça o commit do arquivo quando ele for alterado
- Nunca delete o package-lock.json e nem coloque ele no .gitignore
- O mesmo vale para o yarn.lock
Contexto
Ainda hoje eu vejo muita gente discutindo sobre porque não commitar o package-lock. Rola um misticismo danado em cima desse arquivo tão útil e hoje vamos entender se vale a pena ou usar.
Os problemas
Tem sido cada vez mais raro, mas ainda acontece: aquela dependência que você adicionou no package.json e colocou a versão com um circunflexo (Ex.: "typescript": "^4.0.0"
) atualizou pra versão 4.9 e sua aplicação começou a quebrar.
Isso acontece porque você permitiu o update da major pra essa dependência, permitindo a atualização de novas features. O problema é que um código que o desenvolvedor considera como feature, pode se tornar uma breaking change pra você.
Daí você pode ser malandro e tirar o circunflexo pra travar a versão, mas você sabia que a dependência da sua dependência também pode ter o tal circunflexo?
Outro caso acontece quando você desenvolve a sua feature, commita o seu código, e na hora do CI o build vai lá e quebra, mas local ele roda normalmente.
Ou pior, a versão de produção começa a apresentar um bug estranho que só acontece em produção, e depois de horas investigando você descobre que é a versão da lib que tá diferente.
A solução: package-lock.json
Todos esses problemas poderiam ter sido evitados com o package-lock.json. O lock, como seu próprio nome diz, é uma espécie de trava que descreve toda a árvore de dependências geradas pelo npm install
e garante que todas as pessoas do projeto, incluindo o seu CI, vão instalar as mesmas dependências e suas respectivas versões.
Como cada commit tem seu snapshot do package-lock, você consegue voltar pra uma versão anterior da aplicação e reinstalar toda a árvore de dependências que funcionava quando o snapshot foi criado.
O package-lock.json também indica quando uma dependência foi atualizada, te dando uma ótima visibilidade da árvore de dependências do seu projeto.
Pra galera do yarn: yarn.lock
E se você usa o yarn, isso também vale pra você. O yarn.lock tem a mesma funcionalidade do package-lock.json e também deve ser versionado.
This content originally appeared on DEV Community and was authored by Ricardo Mello
Ricardo Mello | Sciencx (2023-02-25T15:44:12+00:00) Commitar ou não commitar o package-lock.json?. Retrieved from https://www.scien.cx/2023/02/25/commitar-ou-nao-commitar-o-package-lock-json/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.