我试图基于API Wiki构建增量TypeScript观察器,但是我无法获取它来发出输出。保存时它会检测到更改,并说没有错误,并调用emit
,但是从没有任何输出。我已覆盖emit
以查看发生了什么(Wiki中的代码无法正常工作,因此我添加了该覆盖),并且emitSkipped
为假,但是sourceFile
和{{1} }都未定义。我想念什么?我正在使用TypeScript 3.0.3
emittedFiles
tsconfig.json:
const createProgram = ts.createSemanticDiagnosticsBuilderProgram;
const host = ts.createWatchCompilerHost(
configPath,
{},
ts.sys,
createProgram,
reportDiagnostic,
reportWatchStatusChanged
);
const origCreateProgram = host.createProgram;
host.createProgram = (
rootNames,
options,
host,
oldProgram
) => {
return origCreateProgram(rootNames, options, host, oldProgram);
};
const origPostProgramCreate = host.afterProgramCreate;
host.afterProgramCreate = program => {
const origEmit = program.emit;
program.emit = (
sourceFile,
writeFileCallback,
cancellationToken,
emitOnlyDtsFiles,
customTranformers
) => {
console.log(`emit called ${sourceFile}`);
const emitResult = origEmit(sourceFile, writeFileCallback, cancellationToken, emitOnlyDtsFiles, customTranformers);
console.log(emitResult.emitSkipped);
console.log(Object.keys(emitResult));
console.log(emitResult.emittedFiles);
emitResult.diagnostics.forEach(d => {
reportDiagnostic(d);
})
return emitResult;
};
origPostProgramCreate(program);
};