Dependências e pacotes
Versionamento semântico, arquivos de trava e o risco de segurança das dependências transitivas.
Dependências são bibliotecas de terceiros que o projeto usa. O gerenciador de pacotes (npm, pip, Go modules, Maven, NuGet) baixa cada uma, na versão certa, junto com as dependências dela.
A maior parte do código que roda em produção não foi escrita pela equipe. Cada pacote é uma porta de entrada para defeitos, vulnerabilidades e até código malicioso.
- Uma dependência direta traz dezenas de outras, indiretas.
- O versionamento semântico diz o que uma atualização promete quebrar ou não.
- O arquivo de trava garante que todos instalem exatamente as mesmas versões.
- Scripts de instalação executam código de terceiros na sua máquina e no CI.
- Atualizações pequenas e frequentes são mais seguras que grandes e raras.