Como gerenciar dependências e bibliotecas em projetos nativos de reação
Compreender as Dependências em Reagir Nativo
Dependências são bibliotecas ou módulos externos em que seu projeto depende para adicionar funcionalidade, simplificar o desenvolvimento ou melhorar o desempenho. No React Native, dependências são normalmente gerenciadas via npm ou fio – gerenciadores de pacotes JavaScript que lidam com instalação de biblioteca, atualizações, controle de versão e, às vezes, até ligação de código nativo. Ao contrário de um aplicativo padrão web, React Native projetos geralmente agrupam dependências JavaScript ao lado de dependências nativas (iOS CocoaPods, arquivos Android Gradle), tornando o gerenciamento de dependência mais nuances.
As dependências são divididas em duas categorias:
- Dependências do JavaScript – bibliotecas JS puras (por exemplo, ], ) que funcionam sem qualquer configuração nativa.
- Dependências nativas – bibliotecas que exigem a ligação ao código nativo (por exemplo, ], ). Estas frequentemente precisam de passos adicionais de configuração como ] ou alterações manuais de Gradle.
A Reagir documentação nativa fornece detalhes sobre a inicialização de um projeto e sua árvore de dependência padrão.
Instalando dependências
Para adicionar uma nova biblioteca ao seu projeto React Native, use o comando de instalação do gestor de pacotes. Por exemplo, para instalar react-navigation, execute:
npm install @react-navigation/native @react-navigation/stack
ou com fios:
yarn add @react-navigation/native @react-navigation/stack
Após a instalação, algumas bibliotecas necessitam de ligação de código nativo. No React Native 0, 60+, o auto- ligação lida automaticamente com a maioria das dependências nativas. Contudo, certas bibliotecas (especialmente aquelas com vistas nativas personalizadas ou SDKs de terceiros) ainda requerem passos manuais:
- Para iOS: executar ou para instalar os pods CocoaPods.
- Para Android: o da biblioteca é automaticamente mesclado, mas você pode precisar adicionar um repositório ou modificar se o pacote React Native da biblioteca não for registrado automaticamente.
Verifique sempre o guia de instalação da biblioteca – muitas bibliotecas populares pós-instalação para evitar falhas em tempo de execução.
Usando a ligação reactive-native npx (Legacy)
Para projetos que usam Reagir o <0.60 nativo, você deve vincular manualmente dependências nativas com . Este comando modifica seu Podfile e/ou . Se você estiver mantendo um projeto legado, considere migrar para auto-ligar com ].
Gravar as Dependências
Por padrão, npm e yarn save installed package.json ] sob o arquivo ou . Isto mantém o controle de todas as dependências e seus intervalos de versão, garantindo que outros desenvolvedores ou ambientes de implantação possam instalar o mesmo conjunto de pacotes com um único comando (]] ou ).
Quando você instala um pacote sem marcar explicitamente como uma dependência de dev, ele é salvo sob . Para ferramentas usadas apenas durante o desenvolvimento (por exemplo, ], , , use:
npm install --save-dev package-name
yarn add --dev package-name
Manter uma separação clara entre as dependências de execução e dev reduz o tamanho do pacote na produção e impede a inclusão acidental de utilitários de build-time no arquivo de loja de aplicativos.
Gerenciando versões de dependência
Especificando versões exatas no seu pacote .json ajuda a prevenir problemas inesperados causados por atualizações. Você pode usar o versionamento semântico (semver) para controlar atualizações:
- – aceita qualquer versão menor ou patch acima de 1.0.0 (por exemplo, 1.1.0, 1.2.5) mas não 2.0.0.
- – aceita apenas versões de patch acima de 1.0.0 (por exemplo, 1.0.1, 1.0.9) mas não 1.1.0.
- – preso à versão 1.0.0 (sem atualizações).
Para aplicações de produção, fixe as suas dependências directas para versões exactas (por exemplo, ]) para evitar alterações de quebra acidental durante a implantação. Use um ficheiro de bloqueio (] ou ]) para garantir que cada instalação produz árvores idênticas .
Resolvendo conflitos de versões
Quando duas bibliotecas requerem versões diferentes do mesmo pacote, você pode encontrar avisos de dependência de pares ou erros de execução. Ferramentas para resolver conflitos:
- npm ls package-name – exibe a árvore de dependência e destaca duplicatas.
- yarn why package-name – explica por que um pacote é instalado.
- npm dedupe / yarn-deduplicate – achata pacotes duplicados, sempre que possível.
Para React Native, preste atenção extra a versões conflitantes de , , ou módulos nativos como . Versões inconsistentes podem causar erros crípticos como “não pode ser encontrado módulo nativo.”
Atualizando dependências
Atualizar regularmente as dependências é vital para segurança, desempenho e acesso a novos recursos. Use as seguintes abordagens:
- Actualizações de menor/patch: ] ou – seguros para alterações não-quebrantes.
- Atualizações principais: manualmente, empurre a versão em e execute . Revise o changelog da biblioteca para quebrar as alterações da API.
- Actualização interactiva:] usa (instalado separadamente) para ver quais os pacotes que têm versões mais recentes, depois actualiza selectivamente.
Ao atualizar o núcleo React Native ( pacote), siga sempre o oficial Reagir Guia de atualização nativo e use para mesclar alterações nos arquivos de modelo do seu projeto. Teste completamente em simuladores iOS e Android e dispositivos reais após qualquer atualização importante.
Atualizações Automatizadas com CI/CD
Em um pipeline de integração contínua, configure um trabalho que execute ou periodicamente, crie uma solicitação de pull para atualizações menores e desencadeie suítes de teste completas. Isso evita a rot dependência mantendo um ambiente estável.
Removendo dependências não usadas
Quando uma biblioteca não é mais usada, remova-a para reduzir o tamanho do pacote e simplificar a manutenção:
npm uninstall library-name
yarn remove library-name
Os pacotes não usados podem permanecer em mesmo após a remoção se forem dependências transitivas. Executar ou para excluir pacotes estranhos. Para uma limpeza mais completa, considere:
- ]depcheck – uma ferramenta que identifica dependências não utilizadas em sua base de código.
- npx react-native unlink library-name (legacy) – remove quaisquer artefatos nativos de ligação.
Melhores práticas para a gestão da dependência
- Regularmente reveja e atualize dependências. Programe uma “auditoria de dependência” mensal – verifique se há alertas de segurança (, atualize para versões estáveis mais recentes e limpe pacotes obsoletos.
- Mantenha as dependências ao mínimo necessário. Evite bibliotecas “kitchen sink”; escolha alternativas focadas e bem mantidas (por exemplo, ]] para ícones em vez de importar um kit de UI inteiro).
- Use versioning semântico para controlar atualizações. Pin versões principais e confiar em arquivos de bloqueio para reprodutibilidade.
- Tente cuidadosamente após atualizar dependências. Execute testes unitários, testes de integração e testes manuais de interface em ambas as plataformas. Preste atenção ao comportamento alterado do módulo nativo.
- Mantenha um arquivo limpo e bloqueie. Evite edições manuais que possam introduzir inconsistências. Persistir ] ou para controle de versão para garantir instalações idênticas em ambientes.
- Prefira o fio sobre o npm se você precisar de instalações determinísticas e espaços de trabalho. O fio Berry (v2+) oferece Plug'n'Play, que pode acelerar as instalações, mas pode exigir verificações de compatibilidade com React Native.
- Use para diagnosticar problemas comuns de dependência e ambiente antes de depurar.
Manuseando dependências nativas com CacauPods e Gradle
Para iOS, sempre commit para bloquear as versões de pods nativos. Executar quando você atualizar uma biblioteca nativa React para obter a versão mais recente compatível do pod. Para Android, certifique-se de que o seu não tem valores conflitantes ou entre bibliotecas.
Usar monorrepos com React Native
Se o seu projeto usar um monorepo (por exemplo, Nx, Turborepo, Lerna), gerencie dependências no nível raiz com espaços de trabalho. Tenha cuidado com o içamento – algumas bibliotecas nativas de React podem exigir ] opções para evitar conflitos de dependência transitivos.
Pistácios comuns e como evitá - los
- “Não consigo encontrar o módulo” erros após a instalação do npm: Excluir , , e executar a instalação fresca. Se usar fio, excluir também (mas ser cauteloso com arquivos de bloqueio).
- iOS build fails after adding a library:] Certifique-se de que você executou e que o podfile da biblioteca é corretamente referenciado. Verifique os logs de compilação do Xcode para erros de “biblioteca não encontrada”.
- Bruck de execução Android devido à falta de módulo nativo:] Verifique se o pacote Android da biblioteca está auto-registrado ou que você adicionou manualmente o seu em .
- Diploma os conflitos de símbolos ou métodos: Use e resolva códigos nativos conflitantes, atualizando ou desclassificando uma das bibliotecas.
Recursos externos
- Reagir Documentação Oficial Nativa – Dependências
- npm install Command Reference
- Yarn Uso e Comandos
- auditoria-ci – Auditorias de segurança para a IC
O gerenciamento eficaz de dependência ajuda a manter seu projeto React Native seguro, eficiente e mantendível. Seguindo essas práticas, irá simplificar o desenvolvimento, reduzir os problemas potenciais causados por bibliotecas desatualizadas ou incompatíveis, e permitir que sua equipe se concentre em construir recursos em vez de combater o inferno de dependência.