diff --git a/packages/vite-plugin-checker/src/checkers/typescript/main.ts b/packages/vite-plugin-checker/src/checkers/typescript/main.ts index e86fe3ed..9fabee3e 100644 --- a/packages/vite-plugin-checker/src/checkers/typescript/main.ts +++ b/packages/vite-plugin-checker/src/checkers/typescript/main.ts @@ -105,16 +105,22 @@ const createDiagnostic: CreateDiagnostic<'typescript'> = (pluginConfig) => { // https://github.com/microsoft/TypeScript/pull/33082/files const createProgram = ts.createEmitAndSemanticDiagnosticsBuilderProgram - const host = ts.createWatchCompilerHost( - configFile, - { noEmit: true }, - ts.sys, - createProgram, - reportDiagnostic, - reportWatchStatusChanged - ) - - ts.createWatchProgram(host) + if (typeof pluginConfig.typescript === 'object' && pluginConfig.typescript.buildMode) { + const host = ts.createSolutionBuilderWithWatchHost(ts.sys, createProgram, reportDiagnostic, undefined, reportWatchStatusChanged) + + ts.createSolutionBuilderWithWatch(host, [configFile], {}).build() + } else { + const host = ts.createWatchCompilerHost( + configFile, + { noEmit: true }, + ts.sys, + createProgram, + reportDiagnostic, + reportWatchStatusChanged + ) + + ts.createWatchProgram(host) + } }, } }