我想使用输出打字稿而不是javascript的打字稿转换器api编写自定义编译器。为此,我需要禁用默认的转换器(打字稿→ecma2017→ecma2016→...)。
这可能吗?我宁愿直接使用tsc
,但是如果我必须手动使用编译器api,也可以。
答案 0 :(得分:1)
没有ts.ScriptTarget.TypeScript
,因此您需要使用编译器API。
这是基本概念(未经测试,但应该可以帮助您开始):
import * as ts from "typescript";
// setup
const printer = ts.createPrinter();
const sourceFiles: ts.SourceFile[] = ...;
const transformerFactory: ts.TransformerFactory<ts.SourceFile> = ...;
// transform the source files
const transformationResult = ts.transform(sourceFiles, [transformerFactory]);
// log the diagnostics if they exist
if (transformationResult.diagnostics) {
// output diagnostics (ts.formatDiagnosticsWithColorAndContext is nice to use)
}
// print the transformed ASTs and write the result out to files
// note: replace fs.writeFile with something that actually works
const fileWrites = transformationResult.transformed
.map(file => fs.writeFile(file.fileName, printer.printFile(file));
Promise.all(fileWrites)
.then(() => console.log("finished"))
.catch(err => console.error(err));