vite-esbuild-typescript-checker
Version:
* Speeds up [TypeScript](https://github.com/Microsoft/TypeScript) type checking * Supports [Vue Single File Component](https://vuejs.org/v2/guide/single-file-components.html) * Displays nice error messages with the [code frame](https://babeljs.io/docs/en/
45 lines (44 loc) • 1.79 kB
JavaScript
import ts from 'typescript';
import { createWatchSolutionBuilderHost } from '../host/watch-solution-builder-host.js';
import { getParsedConfig } from '../config.js';
import { afterProgramEmitAndDiagnostics } from '../functions.js';
let solutionBuilderHost;
let solutionBuilder;
export function useSolutionBuilder(configFile, port) {
if (!solutionBuilderHost) {
const parsedConfig = getParsedConfig();
solutionBuilderHost = createWatchSolutionBuilderHost(parsedConfig, (rootNames, compilerOptions, host, oldProgram, configFileParsingDiagnostics, projectReferences)=>{
// if (compilerOptions) {
// startTracingIfNeeded(compilerOptions);
// }
return ts.createSemanticDiagnosticsBuilderProgram(rootNames, compilerOptions, host, oldProgram, configFileParsingDiagnostics, projectReferences);
}, undefined, undefined, undefined, undefined, (builderProgram)=>{
afterProgramEmitAndDiagnostics(builderProgram, port);
// updateDiagnostics(
// getConfigFilePathFromBuilderProgram(builderProgram),
// getDiagnosticsOfProgram(builderProgram)
// );
// emitTsBuildInfoIfNeeded(builderProgram);
// stopTracingIfNeeded(builderProgram);
});
}
if (!solutionBuilder) {
solutionBuilder = ts.createSolutionBuilderWithWatch(solutionBuilderHost, [
configFile
], {
watch: true,
incremental: true
}, {
excludeDirectories: [
'node_modules'
]
});
solutionBuilder.build();
}
}
export function invalidateSolutionBuilder(withHost = false) {
if (withHost) {
solutionBuilderHost = undefined;
}
solutionBuilder = undefined;
}