Como gerenciar as dependências npm sem enlouquecer?

Estou trabalhando em um projeto React bem grande e toda vez que instalo um novo package acabo com conflitos de versão absurdos. Tentei usar npm ci mas não funciona sempre, principalmente quando estou colaborando com outras pessoas. Tem um jeito mais inteligente de lidar com isso sem precisar refazer tudo do zero?

1 respostas

Quando você tem esses conflitos, geralmente acontece quando instala pacotes novos com `npm install` sem verificar o que faz ao `package-lock.json`, certo?

O problema é que npm é um pouco flexible demais por padrão. Primeira coisa, garanta que todo mundo no time use `npm ci` no lugar de `npm install` quando tá trabalhando em um projeto já iniciado. A diferença é que `npm ci` lê exatamente o que tem em `package-lock.json` sem modificar, enquanto `install` fica fazendo upgrade de patch e minor version quando quer. Se você usa `npm install` pra adicionar coisa nova e depois faz push do lock file, os outros acabam com versões diferentes. Além disso, sempre commita o `package-lock.json` no repositório - parece óbvio mas muita gente não faz e depois fica se perguntando por que o build falha.

Para pacotes novos, usa `npm install --save-exact` se você realmente quer congelar uma versão específica, ou dá uma olhada em tools tipo `npm audit` pra verificar se tem conflitos de dependência conhecidos. Se o problema é bem grave com várias dependências aninhadas, considera também usar `npm dedupe` de vez em quando pra limpar a árvore de dependências. Na real, você também poderia tentar pnpm ou yarn se tiver a fim de mudar de ecosystem - eles gerenciam dependências de um jeito mais organizado - mas se quiser ficar com npm, respeitar o fluxo `ci` + `package-lock.json` no git deveria resolver a maioria dos problemas.

Sua resposta

Entrarpara responder.