From 696c09b0615a20a5df2131354b6009c56d241f1d Mon Sep 17 00:00:00 2001 From: Johannes Date: Mon, 9 Feb 2026 10:53:56 +0100 Subject: [PATCH] add --- build/buildConfig.ts | 12 ++++++++++++ build/gulpfile.ts | 5 ++++- build/next/index.ts | 9 +++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 build/buildConfig.ts diff --git a/build/buildConfig.ts b/build/buildConfig.ts new file mode 100644 index 00000000000..a4299d2647f --- /dev/null +++ b/build/buildConfig.ts @@ -0,0 +1,12 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +/** + * When `true`, self-hosting uses esbuild for fast transpilation (build/next) + * and gulp-tsb only for type-checking (`noEmit`). + * + * When `false`, gulp-tsb does both transpilation and type-checking (old behavior). + */ +export const useEsbuildTranspile = true; diff --git a/build/gulpfile.ts b/build/gulpfile.ts index 9ee544f0069..1c21618ca60 100644 --- a/build/gulpfile.ts +++ b/build/gulpfile.ts @@ -13,6 +13,7 @@ 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'; const require = createRequire(import.meta.url); @@ -32,7 +33,9 @@ gulp.task(transpileClientTask); const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), compilation.copyCodiconsTask, compilation.compileApiProposalNamesTask, compilation.compileTask('src', 'out', false))); gulp.task(compileClientTask); -const watchClientTask = task.define('watch-client', task.parallel(compilation.watchTask('out', false, 'src', { noEmit: true }), compilation.watchApiProposalNamesTask, compilation.watchCodiconsTask)); +const watchClientTask = useEsbuildTranspile + ? task.define('watch-client', task.parallel(compilation.watchTask('out', false, 'src', { noEmit: true }), compilation.watchApiProposalNamesTask, compilation.watchCodiconsTask)) + : task.define('watch-client', task.series(util.rimraf('out'), task.parallel(compilation.watchTask('out', false), compilation.watchApiProposalNamesTask, compilation.watchCodiconsTask))); gulp.task(watchClientTask); // All diff --git a/build/next/index.ts b/build/next/index.ts index 2b926a1e5e6..e7978d726cc 100644 --- a/build/next/index.ts +++ b/build/next/index.ts @@ -13,6 +13,7 @@ import { nlsPlugin, createNLSCollector, finalizeNLS, postProcessNLS } from './nl import { getVersion } from '../lib/getVersion.ts'; import product from '../../product.json' with { type: 'json' }; import packageJson from '../../package.json' with { type: 'json' }; +import { useEsbuildTranspile } from '../buildConfig.ts'; const globAsync = promisify(glob); @@ -919,6 +920,14 @@ ${tslib}`, // ============================================================================ async function watch(): Promise { + if (!useEsbuildTranspile) { + console.log('Starting transpilation...'); + console.log('Finished transpilation with 0 errors after 0 ms'); + console.log('[watch] esbuild transpile disabled (useEsbuildTranspile=false). Keeping process alive as no-op.'); + await new Promise(() => { }); // keep alive + return; + } + console.log('Starting transpilation...'); const outDir = OUT_DIR;