From 2cb278e2e0bb0e0dbf6978ce5a1f2e7a4bc48ee2 Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:27:03 -0400 Subject: [PATCH] Fix task watching --- build/gulpfile.ts | 5 +---- build/lib/compilation.ts | 39 ++++++++++----------------------------- 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/build/gulpfile.ts b/build/gulpfile.ts index b7bbc216915..d8c0aad4012 100644 --- a/build/gulpfile.ts +++ b/build/gulpfile.ts @@ -13,7 +13,6 @@ import { compileExtensionMediaTask, compileExtensionsTask, watchExtensionsTask } import * as compilation from './lib/compilation.ts'; import * as task from './lib/task.ts'; import * as util from './lib/util.ts'; -import { useEsbuildTranspile } from './buildConfig.ts'; // Extension point names gulp.task(compilation.compileExtensionPointNamesTask); @@ -36,9 +35,7 @@ gulp.task(transpileClientTask); const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), compilation.copyCodiconsTask, compilation.compileApiProposalNamesTask, compilation.compileExtensionPointNamesTask, compilation.compileTask('src', 'out', false))); gulp.task(compileClientTask); -const watchClientTask = useEsbuildTranspile - ? task.define('watch-client', task.parallel(compilation.watchTypeCheckTask('src'), compilation.watchApiProposalNamesTask, compilation.watchExtensionPointNamesTask, compilation.watchCodiconsTask)) - : task.define('watch-client', task.series(util.rimraf('out'), task.parallel(compilation.watchTask('out', false), compilation.watchApiProposalNamesTask, compilation.watchExtensionPointNamesTask, compilation.watchCodiconsTask))); +const watchClientTask = task.define('watch-client', task.parallel(compilation.watchTypeCheckTask('src'), compilation.watchApiProposalNamesTask, compilation.watchExtensionPointNamesTask, compilation.watchCodiconsTask)); gulp.task(watchClientTask); // All diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts index 1e1949c6f73..1a936bd7039 100644 --- a/build/lib/compilation.ts +++ b/build/lib/compilation.ts @@ -171,28 +171,8 @@ export function compileTask(src: string, out: string, build: boolean, options: { return task; } -export function watchTask(out: string, build: boolean, srcPath: string = 'src', options?: { noEmit?: boolean }): task.StreamTask { - - const task = () => { - const compile = createCompile(srcPath, { build, emitError: false, transpileOnly: false, preserveEnglish: false, noEmit: options?.noEmit }); - - const src = gulp.src(`${srcPath}/**`, { base: srcPath }); - const watchSrc = watch(`${srcPath}/**`, { base: srcPath, readDelay: 200 }); - - const generator = new MonacoGenerator(true); - generator.execute(); - - return watchSrc - .pipe(generator.stream) - .pipe(util.incremental(compile, src, true)) - .pipe(gulp.dest(out)); - }; - task.taskName = `watch-${path.basename(out)}`; - return task; -} - -export function watchTypeCheckTask(src: string): task.StreamTask { - const theTask = () => { +export function watchTypeCheckTask(src: string): task.Task { + return task.define(`watch-typecheck-${path.basename(src)}`, () => { const projectPath = path.join(import.meta.dirname, '../../', src, 'tsconfig.json'); const generator = new MonacoGenerator(true); generator.execute(); @@ -200,17 +180,18 @@ export function watchTypeCheckTask(src: string): task.StreamTask { const tsgoStream = watchInput.pipe(generator.stream).pipe(util.debounce(() => { const stream = createTsgoStream(projectPath, { taskName: 'watch-client-noEmit', noEmit: true }); const result = es.through(); - stream.on('end', () => result.emit('end')); - stream.on('error', err => { - fancyLog.error(ansiColors.red('[tsgo] watch-client-noEmit failed'), err); + stream.on('end', () => { result.emit('end'); }); - return result; + stream.on('error', err => { + reporter(err); + fancyLog.error(ansiColors.red('[tsgo] watch-client-noEmit failed')); + result.emit('end'); + }); + return result.pipe(reporter.end(false)); })); return tsgoStream; - }; - theTask.taskName = `watch-typecheck-${path.basename(src)}`; - return theTask; + }); } const REPO_SRC_FOLDER = path.join(import.meta.dirname, '../../src');