Cómo administrar las dependencias y las bibliotecas en los proyectos de reacción
Comprender las dependencias en la reacción de los nativos
Las dependencias son bibliotecas externas o módulos que su proyecto se basa en añadir funcionalidad, simplificar el desarrollo o mejorar el rendimiento. En React Native, las dependencias se administran normalmente a través de npm o hilo – gestores de paquetes JavaScript que manejan la instalación de bibliotecas, actualizaciones, control de versiones, y a veces incluso enlaces de código nativo. A diferencia de una aplicación web estándar, React Native projects a menudo agrupan dependencias JavaScript junto con dependencias nativas (iOS CocoaPodance),
Las dependencias se clasifican en dos categorías:
- Las dependencias de JavaScript ] – bibliotecas de JS puras (por ejemplo, , ]) que funcionan sin ninguna configuración nativa.
- ]] Las bibliotecas que requieren el mantenimiento del código nativo (por ejemplo, ], ]). A menudo necesitan pasos adicionales de configuración como o cambios manuales de la gama.
La React La documentación nativa proporciona detalles sobre la inicialización de un proyecto y su árbol de dependencia predeterminado.
Instalación de dependencias
Para agregar una nueva biblioteca a su proyecto React Native, utilice el comando de instalación del administrador de paquetes. Por ejemplo, para instalar react-navigation, ejecutar:
npm install @react-navigation/native @react-navigation/stack
o con hilo:
yarn add @react-navigation/native @react-navigation/stack
Después de la instalación, algunas bibliotecas requieren la vinculación del código nativo. En React Native 0.60+, la conexión automática maneja automáticamente la mayoría de las dependencias nativas. Sin embargo, ciertas bibliotecas (especialmente las que tienen vistas nativas personalizadas o SDKs de terceros) todavía requieren pasos manuales:
- Para iOS: ejecutar o para instalar las cápsulas CocoaPods.
- Para Android: el repositorio de la biblioteca se fusiona automáticamente, pero es posible que necesite añadir un repositorio o modificar si el paquete de React Native de la biblioteca no está registrado automáticamente.
Siempre revise la guía de instalación de la biblioteca – muchas bibliotecas populares pasos de instalación post-instalación para evitar fallos de tiempo de ejecución.
Usando el enlace reaccionario npx (Legacy)
Para proyectos que utilicen React Native <0.60, debe vincular manualmente las dependencias nativas con . Este comando modifica su Podfile y/o . Si usted está manteniendo un proyecto legado, considere la migración a la conexión automática con .
Dependencias salvedoras
Por defecto, npm y hilo guardan paquetes instalados en su package.json] archivo bajo la sección o . Esto mantiene un seguimiento de todas las dependencias y sus rangos de versiones, asegurando que otros desarrolladores o entornos de despliegue puedan instalar el mismo conjunto de paquetes con un solo comando ( o [FLT]).
Cuando instalas un paquete sin marcarlo explícitamente como una dependencia dev, se salva bajo . Para las herramientas utilizadas sólo durante el desarrollo (por ejemplo, ], , , use:
npm install --save-dev package-name
yarn add --dev package-name
Mantener una separación clara entre las dependencias de tiempo de ejecución y dev reduce el tamaño del paquete en la producción y evita la inclusión accidental de utilidades de tiempo de construcción en el archivo de la tienda de aplicaciones.
Gestión de las versiones de dependencia
La especificación de versiones exactas en su package.json ayuda a prevenir problemas inesperados causados por actualizaciones. Puede utilizar la versión semántica (seemver) para controlar las actualizaciones:
- – acepta cualquier versión menor o parche superior a 1.0.0 (por ejemplo, 1.1.0, 1.2.5) pero no 2.0.0.
- – acepta sólo versiones de parche por encima de 1.0.0 (por ejemplo, 1.0.1, 1.0.9) pero no 1.1.0.
- – afinado a la versión 1.0.0 exactamente (sin actualizaciones).
Para aplicaciones de producción, indique sus dependencias directas a versiones exactas (por ejemplo, ]) para evitar cambios accidentales durante el despliegue. Utilice un archivo de bloqueo (] o ) para garantizar que cada instalación produzca árboles idénticos .
Conflictos de la versión en solución
Cuando dos bibliotecas requieren diferentes versiones del mismo paquete, puede encontrar advertencias de dependencia de pares o errores de tiempo de ejecución. Herramientas para resolver conflictos:
- npm ls package-name – muestra el árbol de dependencia y destaca los duplicados.
- hilo de por qué el nombre de paquete – explica por qué se instala un paquete.
- npm dedupe] / yarn-deduplicate – paquetes duplicados planos siempre que sea posible.
Para React Native, preste atención extra a las versiones conflictivas de , , o módulos nativos como . Las versiones inconsistentes pueden causar errores crípticos como “No se puede encontrar módulo nativo”.
Dependencias de actualización
La actualización periódica de las dependencias es vital para la seguridad, el rendimiento y el acceso a nuevas características.
- Actualizaciones de la misión: ] o ] – seguro para cambios no rompedores.
- Actualizaciones más recientes:] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- Actualización interactiva:] use (instalado por separado) para ver qué paquetes tienen versiones más recientes, luego actualizar selectivamente.
Al actualizar el núcleo React Native itself (] paquete), siempre siga el ]React Native update guide y utilice para combinar los cambios en los archivos de plantilla de su proyecto. Prueba a fondo tanto en los simuladores iOS y Android como en los dispositivos reales después de cualquier actualización importante.
Actualizaciones de automatización con CI/CD
En un oleoducto de integración continua, se establece un trabajo que funciona o periódicamente, crea una solicitud de tirada para actualizaciones menores, y activa suites de prueba completas. Esto evita que la dependencia se pudra mientras mantiene un ambiente estable.
Eliminación de las dependencias no utilizadas
Cuando una biblioteca ya no se utiliza, retírela para reducir el tamaño del paquete y simplificar el mantenimiento:
npm uninstall library-name
yarn remove library-name
Los paquetes no utilizados pueden permanecer en incluso después de la eliminación si eran dependencias transitivas. Ejecute o para eliminar paquetes extraneosos. Para una limpieza más completa, considere:
- depcheck] – una herramienta que identifica dependencias no utilizadas en su base de código.
- npx reaccion-native unlink library-name (legacy) – elimina cualquier nativo que vincule artefactos.
Prácticas óptimas para la gestión de la dependencia
- Revisar y actualizar las dependencias. Programar una auditoría mensual de la dependencia – comprobar si hay asesores de seguridad (]), actualizar a las últimas versiones estables y limpiar paquetes obsoletos.
- Mantén las dependencias al mínimo requerido. Evite las bibliotecas de “hielo de cocina”; escoja alternativas enfocadas y bien mantenidas (por ejemplo, para iconos en lugar de importar un kit completo de interfaz de usuario).
- Utilice la versión semántica para controlar las actualizaciones. Pinar versiones importantes y confíe en los archivos de bloqueo para la reproducibilidad.
- Prueba mucho después de actualizar las dependencias. Ejecute pruebas de unidad, pruebas de integración y pruebas manuales de la interfaz de usuario en ambas plataformas. Preste atención a la alteración del comportamiento del módulo nativo.
- Mantenga un archivo limpio y de bloqueo. Evite las ediciones manuales que pueden introducir inconsistencias. Comence o al control de versiones para asegurar las instalaciones idénticas a través de entornos.
- Prefer hilo sobre npm si necesita instalar y espacios de trabajo determinísticos. Yarn Berry (v2+) ofrece Plug'n'Play, que puede acelerar las instalaciones pero puede requerir controles de compatibilidad con React Native.
- Use ] para diagnosticar problemas comunes de dependencia y medio ambiente antes de depurar.
Manejo de las dependencias nativas con CocoaPods y Gradle
Para iOS, siempre comprometer para bloquear las versiones de las cápsulas nativas. Correr cuando actualice una biblioteca nativa de reacción para obtener la última versión de cápsula compatible. Para Android, asegúrese de que su no tenga valores contradictorios o en las bibliotecas.
Usando monorepos con React Native
Si su proyecto utiliza un monorepo (por ejemplo, Nx, Turborepo, Lerna), administra las dependencias a nivel de raíz con espacios de trabajo. Tenga cuidado con el acaparamiento – algunas bibliotecas nativas reaccionan pueden requerir opciones para evitar conflictos de dependencia transitivos.
Pitfalls comunes y cómo evitarlos
- "No se pueden encontrar errores de módulo" después de la instalación de npm:] Eliminar , , y ejecutar instalación fresca. Si se utiliza hilo, eliminar también (pero ser cauteloso con los archivos de bloqueo).
- iOS construye falla después de añadir una biblioteca:] Asegúrese de que corriste y que el fichero de pod de la biblioteca se hace referencia correctamente. Compruebe los registros de construcción de Xcode para errores de “no encontrado la biblioteca”.
- Embarazo de tiempo de ejecución Android debido a módulo nativo desaparecido:] Verificar que el paquete Android de la biblioteca está registrado automáticamente o que añadiste manualmente su en .
- Conflictos de símbolos o métodos duplicados: Usa y resuelve códigos nativos conflictivos mediante la actualización o la reducción de una de las bibliotecas.
Recursos externos
- Reactar Documentación Oficial Nativa – Dependencias
- npm instale Command Reference
- Uso y Mandos de hilo
- audit-ci – Auditorías de seguridad para CI
Una gestión eficaz de la dependencia ayuda a mantener su proyecto de React Native seguro, eficiente y sostenible. Siguiendo estas prácticas, simplificará el desarrollo, reducirá los problemas potenciales causados por bibliotecas anticuadas o incompatibles, y permitirá que su equipo se centre en las características de construcción en lugar de luchar contra el infierno de dependencia.