我尝试与TypeScript compiler API wiki上的示例略有不同:
var host = ts.createCompilerHost(options);
var program = ts.createProgram(filenames, options, host);
var checker = ts.createTypeChecker(program, /*produceDiagnostics*/ true);
var result = checker.emitFiles();
问题有两个:
1)如何让emitFiles
写入特定路径?
2)如何捕获和处理编译错误?
答案 0 :(得分:2)
如何使emitFiles写入特定路径
emitFiles
没有做任何实际的写作。它会返回它,你需要编写它,所以你可以在任何地方写它。
e.g。
output.outputFiles.forEach(o => {
mkdirp.sync(path.dirname(o.name));
fs.writeFileSync(o.name, o.text, "utf8");
});
如何捕获和处理编译错误?
使用诊断:
var allDiagnostics = services.getCompilerOptionsDiagnostics()
.concat(services.getSyntacticDiagnostics(filePath))
.concat(services.getSemanticDiagnostics(filePath));
来源:https://github.com/TypeStrong/atom-typescript/blob/master/lib/main/lang/modules/building.ts#L28-L30不要忘记加星;)