From d78a8d02f05cedda155f9ca705f946e158d4247b Mon Sep 17 00:00:00 2001 From: Liang Date: Mon, 20 Jul 2026 11:48:31 +0800 Subject: [PATCH 1/3] fix(tools): fail on Vite branding source drift --- packages/tools/src/brand-vite.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/tools/src/brand-vite.ts b/packages/tools/src/brand-vite.ts index 1aab68c6fe..70bbc6d76f 100644 --- a/packages/tools/src/brand-vite.ts +++ b/packages/tools/src/brand-vite.ts @@ -52,10 +52,7 @@ function replaceInFile( ); } -function removeAnyInFile( - filePath: string, - searches: Array, -): 'patched' | 'already' { +function removeAnyInFile(filePath: string, searches: Array): 'patched' { const content = readFileSync(filePath, 'utf-8'); for (const search of searches) { if (typeof search === 'string') { @@ -73,7 +70,11 @@ function removeAnyInFile( return 'patched'; } } - return 'already'; + throw new Error( + `[brand-vite] Patch failed in ${filePath}:\n` + + ` Could not find any expected search pattern.\n` + + ` The upstream code may have changed. Please update the search patterns in brand-vite.ts.`, + ); } function logPatch(file: string, desc: string, result: 'patched' | 'already') { From 618f894f163621e6d777d723b88f18792988e817 Mon Sep 17 00:00:00 2001 From: Liang Date: Mon, 20 Jul 2026 12:25:35 +0800 Subject: [PATCH 2/3] fix(tools): restore Vite sources before branding --- packages/tools/src/brand-vite.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/tools/src/brand-vite.ts b/packages/tools/src/brand-vite.ts index 70bbc6d76f..4426cbf18c 100644 --- a/packages/tools/src/brand-vite.ts +++ b/packages/tools/src/brand-vite.ts @@ -13,11 +13,19 @@ * 5. plugins/reporter.ts: Suppress redundant "vite v" native reporter line */ +import { execFileSync } from 'node:child_process'; import { readFileSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; const VITE_DIR = 'vite'; -const VITE_NODE_DIR = join(VITE_DIR, 'packages', 'vite', 'src', 'node'); +const VITE_NODE_DIR = join('packages', 'vite', 'src', 'node'); +const VITE_BRAND_FILES = [ + join(VITE_NODE_DIR, 'constants.ts'), + join(VITE_NODE_DIR, 'cli.ts'), + join(VITE_NODE_DIR, 'build.ts'), + join(VITE_NODE_DIR, 'logger.ts'), + join(VITE_NODE_DIR, 'plugins', 'reporter.ts'), +]; function log(message: string) { console.log(`[brand-vite] ${message}`); @@ -88,7 +96,11 @@ function logPatch(file: string, desc: string, result: 'patched' | 'already') { export function brandVite(rootDir: string = process.cwd()) { log('Applying Vite+ branding patches...'); - const nodeDir = join(rootDir, VITE_NODE_DIR); + const viteDir = join(rootDir, VITE_DIR); + // Always patch raw upstream sources, including when sync-remote already applied branding. + execFileSync('git', ['restore', '--source=HEAD', '--', ...VITE_BRAND_FILES], { cwd: viteDir }); + + const nodeDir = join(viteDir, VITE_NODE_DIR); // 1. constants.ts: Add VITE_PLUS_VERSION constant after VERSION const constantsFile = join(nodeDir, 'constants.ts'); From 944c22212d83c59acf4cfc280515cd2bb9fffa60 Mon Sep 17 00:00:00 2001 From: Liang Date: Mon, 20 Jul 2026 12:53:20 +0800 Subject: [PATCH 3/3] refactor(tools): simplify Vite source restore --- packages/tools/src/brand-vite.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/tools/src/brand-vite.ts b/packages/tools/src/brand-vite.ts index 4426cbf18c..2c01dc08cf 100644 --- a/packages/tools/src/brand-vite.ts +++ b/packages/tools/src/brand-vite.ts @@ -18,14 +18,7 @@ import { readFileSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; const VITE_DIR = 'vite'; -const VITE_NODE_DIR = join('packages', 'vite', 'src', 'node'); -const VITE_BRAND_FILES = [ - join(VITE_NODE_DIR, 'constants.ts'), - join(VITE_NODE_DIR, 'cli.ts'), - join(VITE_NODE_DIR, 'build.ts'), - join(VITE_NODE_DIR, 'logger.ts'), - join(VITE_NODE_DIR, 'plugins', 'reporter.ts'), -]; +const VITE_NODE_DIR = join(VITE_DIR, 'packages', 'vite', 'src', 'node'); function log(message: string) { console.log(`[brand-vite] ${message}`); @@ -96,11 +89,12 @@ function logPatch(file: string, desc: string, result: 'patched' | 'already') { export function brandVite(rootDir: string = process.cwd()) { log('Applying Vite+ branding patches...'); - const viteDir = join(rootDir, VITE_DIR); // Always patch raw upstream sources, including when sync-remote already applied branding. - execFileSync('git', ['restore', '--source=HEAD', '--', ...VITE_BRAND_FILES], { cwd: viteDir }); + execFileSync('git', ['restore', '--source=HEAD', '--', '.'], { + cwd: join(rootDir, VITE_DIR), + }); - const nodeDir = join(viteDir, VITE_NODE_DIR); + const nodeDir = join(rootDir, VITE_NODE_DIR); // 1. constants.ts: Add VITE_PLUS_VERSION constant after VERSION const constantsFile = join(nodeDir, 'constants.ts');