in src/compiler.ts [343:382]
private buildTypeScriptConfig(): TypeScriptConfig {
let references: string[] | undefined;
const isComposite =
this.options.projectReferences !== undefined
? this.options.projectReferences
: this.options.projectInfo.projectReferences !== undefined
? this.options.projectInfo.projectReferences
: false;
if (isComposite) {
references = this.findProjectReferences();
}
const pi = this.options.projectInfo;
return {
compilerOptions: {
...pi.tsc,
...BASE_COMPILER_OPTIONS,
// Enable composite mode if project references are enabled
composite: isComposite,
// When incremental, configure a tsbuildinfo file
tsBuildInfoFile: path.join(pi.tsc?.outDir ?? '.', 'tsconfig.tsbuildinfo'),
},
include: [pi.tsc?.rootDir != null ? path.join(pi.tsc.rootDir, '**', '*.ts') : path.join('**', '*.ts')],
exclude: [
'node_modules',
...(pi.excludeTypescript ?? []),
...(pi.tsc?.outDir != null &&
(pi.tsc?.rootDir == null || path.resolve(pi.tsc.outDir).startsWith(path.resolve(pi.tsc.rootDir) + path.sep))
? [path.join(pi.tsc.outDir, '**', '*.ts')]
: []),
],
// Change the references a little. We write 'originalpath' to the
// file under the 'path' key, which is the same as what the
// TypeScript compiler does. Make it relative so that the files are
// movable. Not strictly required but looks better.
references: references?.map((p) => ({ path: p })),
};
}