Интересующая вас функция: ts.transpileModule
( Источник / Документация ).
Например:
const compilerOptions: ts.CompilerOptions = {
// you'll probably want to load this from a tsconfig.json
target: ts.ScriptTarget.ES5,
module: ts.ModuleKind.CommonJS
};
const result = ts.transpileModule("const t = 5;", {
compilerOptions,
reportDiagnostics: false
});
console.log(result.outputText); // "var t = 5;"
Таким образом, вы захотите перебрать все пути файлов машинописного текста, прочитать их с диска, перенести их, а затем записать их все в файловую систему как файлы js.Вы также можете выполнять чтение и запись в файловую систему параллельно (компилятор делает это синхронно, поэтому асинхронное выполнение этой операции приведет к повышению производительности).
Как вы могли заметить, ts.transpileModule
будет по-прежнемусоздать программу, но она все равно должна быть намного быстрее, чем обычный процесс, потому что она излучает со знанием только одного файла за раз.Чтобы пропустить создание программы, я считаю, что необходимо использовать внутреннюю функцию emitFiles
... хотя для этого потребуется реализация внутреннего типа EmitResolver
для поддержки сценария, в котором я не уверенможно сделать правильно без привязки (я не знаю много об этом, поэтому не могу сказать наверняка).