Actualmente, estoy tratando de desarrollar una herramienta que haga posible empaquetar un módulo JS en un archivo tar y luego cargarlo en Node.js dinámicamente y en memoria.
Funciona perfectamente cuando se importa un solo archivo JS que no tiene dependencias con otros archivos. Pero cuando hay dependencias, todavía no puedo unirlas.
Una estructura de ejemplo en el archivo podría verse así:
someArchive.tar.gz - foo.js - package.json - lib - bar.jsLa relación entre los dos módulos podría verse así (foo.js):
import { something } from "./lib/bar.js";Para que sea posible usar un archivo JS archivado en general, estoy usando el paquete "adm-zip" -npm-package, que me permite manejar archivos en memoria.
Importante: Lamentablemente, no puedo usar el sistema de archivos de ninguna manera para este proyecto.
Si bien el paquete "adm-zip" me permite manejar los datos en sí, estoy construyendo el objeto del módulo por mi cuenta usando el Module-Constructor:
const Module = module.constructor; const m = new Module(); const moduleName = "<Filename relative to archive root>"; m.children = [ <the module-object from bar.js> ]; m._compile(<fooContentFromArchive>, moduleName); m.path = <moduleName without filename>; m.id = moduleName; m.filename = moduleName; return m;Como puede ver, ya puse el objeto-módulo dependiente en la matriz-hijos del objeto-módulo superior. Por lo que entendí, la matriz de niños contiene módulos dependientes.
Pero desafortunadamente, no funciona.
Sé que lo que estoy haciendo es muy especial y complicado, y especialmente usar el sistema de archivos haría que todo fuera mucho más fácil, pero como se mencionó, tengo la limitación de que no tengo acceso al sistema de archivos.
Además, no he encontrado ningún paquete npm que me permita resolver el problema (si lo hago funcionar, podría crear uno).
¿Tienes alguna idea de lo que podría intentar?
¡Gracias de antemano!