Pular para o conteúdo principal

Gerenciamento de Pacotes

Cada linguagem tem seu próprio ecossistema para gerenciar dependências. Veja como diferentes linguagens lidam com gerenciamento de pacotes, resolução de dependências e configuração de projetos.

Instalando & Gerenciando Dependências​

# npm (Node Package Manager)
npm init -y # Create package.json
npm install express # Install dependency
npm install -D jest # Install dev dependency
npm install # Install all from package.json
npm update # Update packages
npm uninstall express # Remove package

# yarn (alternative)
yarn init -y
yarn add express
yarn add -D jest
yarn install
yarn remove express

# pnpm (fast alternative)
pnpm install express
pnpm add -D jest

# Config file: package.json
# Lock file: package-lock.json / yarn.lock / pnpm-lock.yaml
# Registry: npmjs.com

Principais Conclusões​

  • Registros centralizados vs descentralizados -- npm, PyPI, Crates.io, NuGet e Maven Central são centralizados; Go usa proxies de módulos (padrão proxy.golang.org); Zig usa busca baseada em URL sem registro central.
  • Lock files garantem reprodutibilidade -- A maioria dos ecossistemas usa lock files (package-lock.json, Cargo.lock, go.sum, Gemfile.lock, poetry.lock); C/C++ frequentemente dependem de vendoring ou pacotes do sistema com menos garantias.
  • A maturidade das ferramentas varia -- JavaScript tem npm/yarn/pnpm; Python tem pip mais Poetry/uv; o Cargo do Rust é altamente integrado; C e C++ usam vcpkg, Conan ou CMake FetchContent com mais configuração manual.
  • Ambientes virtuais isolam dependências -- O venv do Python e o Bundler do Ruby fornecem isolamento local ao projeto; o node_modules do Node e o cache de módulos do Go servem a objetivos similares.
  • C não tem gerenciador de pacotes padrão -- Desenvolvedores tipicamente usam gerenciadores de pacotes do sistema (apt, brew), vcpkg ou compilação manual; o gerenciamento de dependências é amplamente manual.