Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Refactor `requireNodeAddon` to take the package name and extension-less path of an addon

Abierto
#222 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
node.js, react-native, typescript

Línea de trabajo

Empieza localizando el punto de entrada requireNodeAddon y las declaraciones públicas representadas por index.js e index.d.ts en el ejemplo. Compara la API de ruta sin extensión y packageName solicitada con las implementaciones de las plataformas, incluida la ruta Node.js process.dlopen y la condición de exportación node; se considera terminado cuando los mismos argumentos de llamada funcionan en las plataformas indicadas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Host 🏡

This is a suggestion which is subtly different from the one proposed in https://github.com/callstackincubator/react-native-node-api/issues/91.

Goals

  • Removing the requirement for the Babel plugin, for use-cases where a library author "controls" the code calling into the host package.
  • Give more control to the host package when deciding what library files to loads (at runtime).
  • Supporting multiple platforms (including Node.js) with source-code calling into the host package with the same call arguments

Example library

Imagine a library ("my-lib") with a single index.js entrypoint calling into our host package:

// node_modules/my-lib/index.js
import { requireNodeAddon } from "react-native-node-api";
const addon = requireNodeAddon({
  packageName: "my-lib", // The name from the package.json
  path: "build/Release/hello" // Path to the addon, relative to the package root, stripped from its ".*.node" file extensions.
});
export const sum = addon.sum;

and the following directory structure:

index.js
index.d.ts
build/Release
├── hello.android.node
│   ├── arm64-v8a
│   │   └── libhello.so
│   ├── armeabi-v7a
│   │   └── libhello.so
│   ├── react-native-node-api-module
│   ├── x86
│   │   └── libhello.so
│   └── x86_64
│       └── libhello.so
├── hello.apple.node
│   ├── Info.plist
│   ├── ios-arm64
│   │   └── hello.framework
│   │       ├── Headers
│   │       ├── hello
│   │       └── Info.plist
│   ├── ios-arm64-simulator
│   │   └── hello.framework
│   │       ├── Headers
│   │       ├── hello
│   │       └── Info.plist
│   ├── macos-arm64_x86_64
│   │   └── hello.framework
│   │       ├── Headers
│   │       ├── hello
│   │       └── Info.plist
│   ├── react-native-node-api-module
│   ├── tvos-arm64
│   │   └── hello.framework
│   │       ├── Headers
│   │       ├── hello
│   │       └── Info.plist
│   ├── tvos-arm64-simulator
│   │   └── hello.framework
│   │       ├── Headers
│   │       ├── hello
│   │       └── Info.plist
│   ├── xros-arm64
│   │   └── hello.framework
│   │       ├── Headers
│   │       ├── hello
│   │       └── Info.plist
│   └── xros-arm64-simulator
│       └── hello.framework
│           ├── Headers
│           ├── hello
│           └── Info.plist
└── hello.nodejs.node
    ├── darwin-arm64
    │   └── hello.node
    └── react-native-node-api-module
Lenguaje dominante
TypeScript
Estrellas
188
Forks
10
Merge medio
2 d 17 h
PR fusionados (30 d)
3

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de callstackincubator/react-native-node-api

Todos los issues de callstackincubator/react-native-node-api

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.