Commitar ou não commitar o package-lock.json?

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…


This content originally appeared on DEV Community and was authored by Ricardo Mello

Commitar ou não commitar?

Versão resumida:

  1. Sim, você deve commitar
  2. Sempre faça o commit do arquivo quando ele for alterado
  3. Nunca delete o package-lock.json e nem coloque ele no .gitignore
  4. 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.

Na minha máquina funciona

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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » Commitar ou não commitar o package-lock.json?." Ricardo Mello | Sciencx - Saturday February 25, 2023, https://www.scien.cx/2023/02/25/commitar-ou-nao-commitar-o-package-lock-json/
HARVARD
Ricardo Mello | Sciencx Saturday February 25, 2023 » Commitar ou não commitar o package-lock.json?., viewed ,<https://www.scien.cx/2023/02/25/commitar-ou-nao-commitar-o-package-lock-json/>
VANCOUVER
Ricardo Mello | Sciencx - » Commitar ou não commitar o package-lock.json?. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2023/02/25/commitar-ou-nao-commitar-o-package-lock-json/
CHICAGO
" » Commitar ou não commitar o package-lock.json?." Ricardo Mello | Sciencx - Accessed . https://www.scien.cx/2023/02/25/commitar-ou-nao-commitar-o-package-lock-json/
IEEE
" » Commitar ou não commitar o package-lock.json?." Ricardo Mello | Sciencx [Online]. Available: https://www.scien.cx/2023/02/25/commitar-ou-nao-commitar-o-package-lock-json/. [Accessed: ]
rf:citation
» Commitar ou não commitar o package-lock.json? | Ricardo Mello | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.