23 lines
581 B
JavaScript
23 lines
581 B
JavaScript
const { readFileSync } = require('node:fs');
|
|
const ts = require('typescript');
|
|
|
|
const compilerOptions = {
|
|
module: ts.ModuleKind.CommonJS,
|
|
target: ts.ScriptTarget.ES2022,
|
|
jsx: ts.JsxEmit.ReactJSX,
|
|
esModuleInterop: true,
|
|
};
|
|
|
|
const compileTs = (module, filename) => {
|
|
const source = readFileSync(filename, 'utf8');
|
|
const { outputText } = ts.transpileModule(source, {
|
|
compilerOptions,
|
|
fileName: filename,
|
|
reportDiagnostics: false,
|
|
});
|
|
module._compile(outputText, filename);
|
|
};
|
|
|
|
require.extensions['.ts'] = compileTs;
|
|
require.extensions['.tsx'] = compileTs;
|