UNPKG

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
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; }