Crea una biblioteca para tu módulo
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
React Native cuenta con un ecosistema rico en bibliotecas para resolver problemas comunes. Recopilamos estas bibliotecas en el sitio reactnative.directory, un recurso excelente que todo desarrollador de React Native debería guardar en sus favoritos.
En ocasiones, puedes estar trabajando en un módulo que vale la pena extraer como biblioteca independiente para reutilizar el código. Esto podría ser una biblioteca que quieras usar en todas tus aplicaciones, un componente de código abierto para distribuir en el ecosistema, o incluso una biblioteca que desees comercializar.
En esta guía aprenderás:
-
cómo extraer un módulo como biblioteca
-
cómo distribuir la biblioteca usando NPM
Extraer el módulo como biblioteca
Puedes usar la herramienta create-react-native-library para crear una nueva biblioteca. Esta herramienta configura automáticamente todo el código base necesario: archivos de configuración y archivos específicos para cada plataforma. Además, incluye un menú interactivo que te guía durante el proceso de creación.
Para extraer un módulo como biblioteca independiente, sigue estos pasos:
-
Crear la nueva biblioteca
-
Mover el código de la aplicación a la biblioteca
-
Actualizar el código según la nueva estructura
-
Publicarla
1. Crear una biblioteca
- Inicia el proceso de creación ejecutando el comando:
npx create-react-native-library@latest <Name of Your Library>
-
Asigna un nombre válido para tu módulo (según convenciones npm: solo minúsculas, usando
-para separar palabras). -
Proporciona una descripción del paquete.
-
Completa el formulario hasta llegar a la pregunta "What type of library do you want to develop?"

-
Para esta guía, selecciona la opción Turbo module. Ten en cuenta que puedes crear bibliotecas tanto para la Nueva Arquitectura como para la Arquitectura Legacy.
-
Luego, elige si prefieres una biblioteca que acceda directamente a la plataforma (Kotlin & Objective-C) o una con código compartido en C++ (para Android e iOS).
-
Finalmente, selecciona
Test Appcomo última opción. Esto creará una aplicación de prueba preconfigurada dentro de la carpeta de la biblioteca.
Al terminar el menú interactivo, la herramienta crea una carpeta cuya estructura se ve así en Visual Studio Code:
Explora libremente el código generado. Las partes más importantes son:
-
Carpeta
android: contiene el código específico para Android -
Carpeta
cpp: aloja el código en C++ -
Carpeta
ios: contiene el código específico para iOS -
Carpeta
src: incluye el código JavaScript
El archivo package.json ya está configurado con toda la información que proporcionamos a la herramienta create-react-native-library, incluyendo el nombre y la descripción del paquete. Nota que el package.json también está configurado para ejecutar Codegen.
"codegenConfig": {
"name": "RN<your module name>Spec",
"type": "all",
"jsSrcsDir": "src",
"outputDir": {
"ios": "ios/generated",
"android": "android/generated"
},
"android": {
"javaPackageName": "com.<name-of-the-module>"
}
},
Finalmente, la biblioteca ya contiene toda la infraestructura necesaria para vincularse con proyectos iOS y Android.
2. Copia el código desde tu aplicación
El resto de la guía asume que tienes un Turbo Native Module local en tu aplicación, creado siguiendo las guías disponibles: módulos nativos específicos por plataforma o módulos multiplataforma en C++. Este proceso también aplica para componentes y módulos de arquitectura Legacy, aunque deberás adaptar los archivos a copiar y actualizar.
-
[No requerido para módulos y componentes de arquitectura heredada] Mueve el código que tienes en la carpeta
specsde tu aplicación a la carpetasrccreada porcreate-react-native-library. -
Actualiza el archivo
index.tspara exportar correctamente la especificación del Turbo Native Module, de modo que sea accesible desde la biblioteca. Por ejemplo:
import NativeSampleModule from './NativeSampleModule';
export default NativeSampleModule;
-
Copia el módulo nativo:
- Reemplaza el código en
android/src/main/java/com/<name-of-the-module>con el código que escribiste en la aplicación para tu módulo nativo, si aplica. - Reemplaza el código en la carpeta
ioscon el código que escribiste en tu aplicación para tu módulo nativo, si aplica. - Reemplaza el código en la carpeta
cppcon el código que escribiste en tu aplicación para tu módulo nativo, si aplica.
- Reemplaza el código en
-
[No requerido para módulos y componentes de arquitectura heredada] Actualiza todas las referencias del nombre de especificación anterior al nuevo nombre, el definido en el campo
codegenConfigdelpackage.jsonde la biblioteca. Por ejemplo, si en elpackage.jsonde la aplicación configurasteAppSpecscomocodegenConfig.namey en la biblioteca se llamaRNNativeSampleModuleSpec, debes reemplazar cada aparición deAppSpecsporRNNativeSampleModuleSpec.
¡Eso es todo! Has movido todo el código necesario de tu aplicación a una biblioteca separada.
Probar tu biblioteca
create-react-native-library incluye una aplicación de ejemplo útil que ya está configurada para funcionar con la biblioteca. ¡Es una excelente manera de probarla!
Si revisas la carpeta example, encontrarás la misma estructura de una nueva aplicación React Native que puedes crear desde react-native-community/template.
Para probar tu biblioteca:
-
Navega a la carpeta
example. -
Ejecuta
yarn installpara instalar todas las dependencias. -
Solo para iOS, instala CocoaPods:
cd ios && pod install. -
Construye y ejecuta Android con
yarn androiddesde la carpetaexample. -
Construye y ejecuta iOS con
yarn iosdesde la carpetaexample.
Usar tu biblioteca como módulo local
Existen escenarios donde quizás quieras reutilizar tu biblioteca como módulo local para tus aplicaciones, sin publicarla en NPM.
En este caso, podrías tener tu biblioteca como un directorio hermano de tus aplicaciones.
Development
├── App
└── Library
Puedes usar la biblioteca creada con create-react-native-library también en este caso.
-
Agrega tu biblioteca a tu aplicación navegando a la carpeta
Appy ejecutandoyarn add ../Library. -
Solo para iOS, navega a la carpeta
App/iosy ejecutabundle exec pod installpara instalar tus dependencias. -
Actualiza el código en
App.tsxpara importar el contenido de tu biblioteca. Por ejemplo:
import NativeSampleModule from '../Library/src/index';
Si ejecutas tu aplicación ahora, Metro no encontraría los archivos JS que necesita servir. Esto ocurre porque Metro se ejecuta desde la carpeta App y no tendría acceso a los archivos JS ubicados en Library. Para solucionarlo, actualiza el archivo metro.config.js como sigue:
const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
/**
* Metro configuration
* https://reactnative.dev/docs/metro
*
* @type {import('metro-config').MetroConfig}
*/
+ const path = require('path');
- const config = {}
+ const config = {
+ // Make Metro able to resolve required external dependencies
+ watchFolders: [
+ path.resolve(__dirname, '../Library'),
+ ],
+ resolver: {
+ extraNodeModules: {
+ 'react-native': path.resolve(__dirname, 'node_modules/react-native'),
+ },
+ },
+};
module.exports = mergeConfig(getDefaultConfig(__dirname), config);
La configuración watchFolders indica a Metro que monitoree archivos y cambios en rutas adicionales, en este caso ../Library que contiene el archivo src/index necesario.
La propiedad resolver es necesaria para proporcionar a la biblioteca el código React Native usado por la aplicación. Sin este resolver adicional, las importaciones de React Native en la biblioteca fallarían.
En este punto, puedes construir y ejecutar tu aplicación como de costumbre:
-
Compilar y ejecutar Android con
yarn androiddesde la carpetaexample. -
Compilar y ejecutar iOS con
yarn iosdesde la carpetaexample.
Publicar la biblioteca en NPM
La configuración para publicar todo en NPM ya está lista, gracias a create-react-native-library.
-
Instalar las dependencias en tu módulo con
yarn install. -
Compilar la biblioteca ejecutando
yarn prepare. -
Publicarla con
yarn release.
Después de un tiempo, encontrarás tu biblioteca en NPM. Para verificarlo, ejecuta:
npm view <package.name>
donde package.name es el name que configuraste en el archivo package.json durante la inicialización de la biblioteca.
Ahora, puedes instalar la biblioteca en tu aplicación ejecutando:
yarn add <package.name>
Solo para iOS: cada vez que instales un nuevo módulo con código nativo, debes reinstalar CocoaPods ejecutando bundle exec pod install (recomendado) o pod install si no usas Ruby's Bundler (no recomendado).
¡Felicidades! Has publicado tu primera biblioteca de React Native.