如何从TypeScript编译器API使用--incremental?

时间:2019-08-19 09:53:33

标签: typescript typescript-compiler-api

TypeScript最近添加了“ --incremental”编译器选项。

如何与TS编译器API一起使用?

该程序不会生成.tsbuildinfo文件,并且第二次运行不会更快:

import * as ts from "typescript";

const program = ts.createProgram(["./src/foo.ts"], {
    incremental: true,
    tsBuildInfoFile: "./tsbuildinfo"
});
const emit = program.emit();
console.log('emitted', JSON.stringify(emit)); // { emitSkipped: false, diagnostics: []}

我认为TS实际上并没有在意tsBuildInfo文件的路径,因为如果将tsBuildInfoFile选项设置为“ @@@@@@@”这样的废话,这并没有什么区别。

1 个答案:

答案 0 :(得分:2)

使用常规程序时,tsBuildInfoFile将被忽略。您将需要使用ts.createIncrementalProgram函数来创建程序。

例如:

import * as ts from "typescript";

const program = ts.createIncrementalProgram({
    rootNames: ["./src/foo.ts"],
    options: {
        incremental: true,
        tsBuildInfoFile: "./tsbuildinfo"
    }
});
const emit = program.emit();
console.log('emitted', JSON.stringify(emit));

此外,如果要创建主机,则似乎可能需要使用ts.createIncrementalCompilerHost函数来创建它。