Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

183
Vistas
¿Cómo puedo incluir una dependencia en cadena en línea en un paquete de módulos de JavaScript?

Tengo un módulo TypeScript que usa el código Lua de un archivo .lua externo para hacer algo de magia con el adaptador. Incluyo este código Lua en cadena en el JavaScript y luego uso el paquete 'lua-in-js' para ejecutarlo. Uso el módulo 'fs' para leer el archivo con fs.readFileSync y luego encadeno el resultado de esta manera. (Consulte module.ts a continuación).

 const luaCode = fs.readFileSync('./adapter.lua').toString()

Sin embargo, el desafío es que este módulo TypeScript se usa en React Native, donde el paquete 'fs' no es compatible. Uso 'tsc' para compilar el paquete de módulos, pero en el código compilado, el módulo 'fs' está incluido y se usa como una dependencia. (Consulte bundle.js a continuación).

 const fs_1 = require("fs"); const luaCode = (0, fs_1.readFileSync)('./adapter.lua').toString();

Al intentar ejecutar el código, falla porque 'fs' no es compatible con RN. Por lo tanto, el código Lua debería incluirse en el archivo del paquete en su totalidad dentro de la variable de cadena luaCode . ¿Cómo puedo conseguir esto? A continuación también se muestra mi tsconfig.json como referencia.

 { "compilerOptions": { "target": "ES2015", "module": "commonjs", "declaration": true, "outDir": "lib", "strict": true, "removeComments": true, "skipLibCheck": true, "isolatedModules": true }, "include": [ "src/**/*" ] }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Encontré la solución finalmente por mí mismo. Cambié el proceso de compilación para usar Babel, dejando 'tsc' para generar solo declaraciones de tipos. (Consulte el script de compilación en package.json a continuación).

 "build": "babel src --out-dir lib --extensions .ts && tsc",

Instalé el complemento de Babel 'babel-plugin-inline-import' y 'babel-plugin-module-resolver', de los cuales el primero condujo al resultado que quería. Para compilar usé el preset '@babel/preset-typescript'. (Consulte babel.config.js continuación).

 module.exports = { presets: ['@babel/preset-typescript'], plugins: [ [ 'babel-plugin-inline-import', { extensions: ['.lua'] } ] ], env: { test: { plugins: ['@babel/plugin-transform-modules-commonjs'] } } };

A continuación también se muestra mi tsconfig.json actualizado como referencia.

 { "compilerOptions": { "target": "ES2015", "module": "commonjs", "declaration": true, "outDir": "lib", "strict": true, "removeComments": true, "skipLibCheck": true, "emitDeclarationOnly": true, "isolatedModules": true, "moduleResolution": "node", }, "include": [ "src/**/*" ] }

Después de configurarlos, simplemente podía importar el archivo Lua en el módulo TypeScript y usarlo en 'lua-in-js'.

 import luaAdapter from './adapter.lua';
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda