Bibliotecas, dependências e gerenciadores de pacotes
Objetivo
Compreender reutilização de código, dependências, pacotes, lock files e riscos de supply chain.
Conceitos essenciais
Biblioteca
Conjunto reutilizável de funcionalidades. Pode fazer parte da biblioteca padrão ou vir de terceiros.
Dependência
Componente necessário ao projeto. Dependências podem ter suas próprias dependências, formando um grafo transitivo.
Pacote e repositório
Ecossistemas distribuem bibliotecas como pacotes através de repositórios e metadados.
Gerenciadores
Composer (PHP), pip (Python), npm (Node.js), NuGet (.NET) e Cargo (Rust) automatizam tarefas de instalação e resolução segundo seus modelos.
Lock file
Registra versões concretamente resolvidas e ajuda a reproduzir ambientes.
Segurança
Pacotes podem executar código, hooks ou scripts. Origem, versão, licenças, vulnerabilidades e manutenção fazem parte da decisão técnica.
Modelo mental
PROJETO → DEPENDÊNCIAS DIRETAS → DEPENDÊNCIAS TRANSITIVAS → PACOTES/VERSÕESExemplo e demonstração
Um projeto Node.js pode declarar dependências em package.json e registrar uma resolução em package-lock.json; PHP usa composer.json/composer.lock em fluxo semelhante, embora os ecossistemas tenham regras próprias.
package.json / package-lock.json
composer.json / composer.lock
pyproject.tomlExperimento / prática
- Explique diferença entre biblioteca e framework.
- Desenhe um grafo Projeto → A → B e identifique dependência transitiva.
- Liste dois riscos de instalar pacote de fonte desconhecida.
Erros comuns
- Gerenciador de pacotes é runtime.
- Lock file elimina toda incompatibilidade possível.
- Dependência de terceiros não afeta segurança.
Resumo
Ao concluir esta aula, revise o modelo mental e tente explicá-lo com suas próprias palavras antes de avançar.