Saltar al contenido principal
Versión: 0.82

La CLI de Codegen

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Invocar Gradle o ejecutar manualmente un script puede ser difícil de recordar y requiere mucha ceremonia.

Para simplificarlo, creamos una herramienta CLI que te ayuda a ejecutar esas tareas: la CLI de Codegen. Este comando ejecuta @react-native/codegen para tu proyecto. Las siguientes opciones están disponibles:

sh
npx @react-native-community/cli codegen --help
Usage: rnc-cli codegen [options]

Options:
--verbose Increase logging verbosity
--path <path> Path to the React Native project root. (default: "/Users/MyUsername/projects/my-app")
--platform <string> Target platform. Supported values: "android", "ios", "all". (default: "all")
--outputPath <path> Path where generated artifacts will be output to.
-h, --help display help for command

Ejemplos

  • Leer package.json desde el directorio de trabajo actual y generar código basado en su codegenConfig.
shell
npx @react-native-community/cli codegen
  • Leer package.json desde el directorio de trabajo actual y generar código iOS en la ubicación definida en codegenConfig.
shell
npx @react-native-community/cli codegen --platform ios
  • Leer package.json desde third-party/some-library y generar código Android en third-party/some-library/android/generated.
shell
npx @react-native-community/cli codegen \
--path third-party/some-library \
--platform android \
--outputPath third-party/some-library/android/generated

Inclusión de código generado en bibliotecas

La CLI de Codegen es una excelente herramienta para desarrolladores de bibliotecas. Permite echar un vistazo al código generado para ver qué interfaces necesitas implementar.

Normalmente, el código generado no se incluye en la biblioteca, y la aplicación que la utiliza es responsable de ejecutar Codegen durante el tiempo de compilación. Esta configuración funciona bien en la mayoría de casos, pero Codegen también ofrece un mecanismo para incluir el código generado en la propia biblioteca mediante la propiedad includesGeneratedCode.

Es importante comprender las implicaciones de usar includesGeneratedCode = true. Incluir el código generado ofrece varios beneficios:

  • No necesitas depender de que la aplicación ejecute Codegen por ti: el código generado siempre está disponible.

  • Los archivos de implementación siempre son consistentes con las interfaces generadas (esto hace tu código de biblioteca más resistente a cambios de API en codegen).

  • No necesitas incluir dos conjuntos de archivos para admitir ambas arquitecturas en Android. Puedes mantener solo el de Nueva Arquitectura, garantizando compatibilidad con versiones anteriores.

  • Al tener todo el código nativo disponible, es posible distribuir la parte nativa de la biblioteca como precompilado.

Por otro lado, debes considerar una desventaja:

  • El código generado usará la versión de React Native definida en tu biblioteca. Si tu biblioteca usa React Native 0.76, el código se basará en esa versión. Esto podría causar incompatibilidad con aplicaciones que usen versiones anteriores de React Native (ej: una app con React Native 0.75).

Habilitación de includesGeneratedCode

Para habilitar esta configuración:

  • Añade la propiedad includesGeneratedCode en el campo codegenConfig de tu package.json. Establece su valor en true.

  • Ejecuta Codegen localmente con la CLI de codegen.

  • Actualiza tu package.json para incluir el código generado.

  • Actualiza tu podspec para incluir el código generado.

  • Actualiza tu archivo build.Gradle para incluir el código generado.

  • Actualiza cmakeListsPath en react-native.config.js para que Gradle busque el archivo CMakeLists en tu outputDir en lugar del directorio de compilación.