node.js - ¿Cómo puedo concatenar la salida de TypeScript sin romper las importaciones de Node?
Estoy concatenando la salida del compilador de TypeScript usando este método. Sin embargo, hacerlo rompe las importaciones que tengo a módulos de ruta relativa en Node.
Lo siguiente se compila y concatena con éxito;
// Group.ts
class Group {
doSomething() { ... }
}
export = Group
// Main.ts
import Group = require('./Group');
new Group().doSomething();
Pero ejecutarlo entonces lanza;
Error: Cannot find module './Group'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (c:\git\nzb-watch\src\compiled.js:64:13)
at Module._compile (module.js:397:26)
at Object.Module._extensions..js (module.js:404:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:429:10)
at startup (node.js:139:18)
at node.js:999:3
¿Cómo puedo lograr la concatenación del JS compilado sin que se produzca este error?
Respuesta #1
En lugar de pedirle al compilador de TypeScript que meta todo en un solo archivo, deberías usar un empaquetador de módulos que se encargue de crear el paquete y luego cargar los módulos del paquete en tiempo de ejecución. Hay una multitud de empaquetadores disponibles, incluyendo rollup, webpack, browserify y muchos más.
Respuesta #2
import ... require es para archivos js. Una vez que te cambias a ts, usas import ... from
import Group from './Group';
