From 5517dba6500c6c0743db7468c8f243a276c6d5ab Mon Sep 17 00:00:00 2001 From: mkorwel Date: Tue, 14 Apr 2026 17:05:30 -0700 Subject: [PATCH] feat(ci): integrate PR #12389 build improvements and tsbuildinfo --- .gitignore | 2 ++ package.json | 1 - packages/a2a-server/tsconfig.json | 1 + packages/cli/tsconfig.json | 1 + packages/core/tsconfig.json | 1 + packages/test-utils/tsconfig.json | 1 + packages/vscode-ide-companion/tsconfig.json | 3 +- scripts/build.js | 36 +++++++++------------ 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 85902b4a7c..b06f9fb358 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,8 @@ bower_components .DS_Store Thumbs.db +.cache/ + # TypeScript build info files *.tsbuildinfo diff --git a/package.json b/package.json index 150abcf3c3..d44b49b7f2 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "build-and-start": "npm run build && npm run start --", "build:vscode": "node scripts/build_vscode_companion.js", "build:all": "npm run build && npm run build:sandbox && npm run build:vscode", - "build:packages": "npm run build --workspaces", "build:sandbox": "node scripts/build_sandbox.js", "build:binary": "node scripts/build_binary.js", "bundle": "npm run generate && npm run build --workspace=@google/gemini-cli-devtools && npm run bundle:browser-mcp -w @google/gemini-cli-core && node esbuild.config.js && node scripts/copy_bundle_assets.js", diff --git a/packages/a2a-server/tsconfig.json b/packages/a2a-server/tsconfig.json index 06e3256b97..b26375ce34 100644 --- a/packages/a2a-server/tsconfig.json +++ b/packages/a2a-server/tsconfig.json @@ -4,6 +4,7 @@ "outDir": "dist", "lib": ["DOM", "DOM.Iterable", "ES2023"], "composite": true, + "tsBuildInfoFile": "../../.cache/a2a-server.tsbuildinfo", "types": ["node", "vitest/globals"] }, "include": ["index.ts", "src/**/*.ts", "src/**/*.json"], diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index e361d7ffe0..9b5bd16a27 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -4,6 +4,7 @@ "outDir": "dist", "jsx": "react-jsx", "lib": ["DOM", "DOM.Iterable", "ES2023"], + "tsBuildInfoFile": "../../.cache/cli.tsbuildinfo", "types": ["node", "vitest/globals"] }, "include": [ diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 7526c37932..a357af443f 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -4,6 +4,7 @@ "outDir": "dist", "lib": ["DOM", "DOM.Iterable", "ES2023"], "composite": true, + "tsBuildInfoFile": "../../.cache/core.tsbuildinfo", "types": ["node", "vitest/globals"], "baseUrl": ".", "paths": { diff --git a/packages/test-utils/tsconfig.json b/packages/test-utils/tsconfig.json index ee9b84b1b4..56eba05f6c 100644 --- a/packages/test-utils/tsconfig.json +++ b/packages/test-utils/tsconfig.json @@ -4,6 +4,7 @@ "outDir": "dist", "lib": ["DOM", "DOM.Iterable", "ES2021"], "composite": true, + "tsBuildInfoFile": "../../.cache/test-utils.tsbuildinfo", "types": ["node"] }, "include": ["index.ts", "src/**/*.ts", "src/**/*.json"], diff --git a/packages/vscode-ide-companion/tsconfig.json b/packages/vscode-ide-companion/tsconfig.json index f135706485..1cf9163267 100644 --- a/packages/vscode-ide-companion/tsconfig.json +++ b/packages/vscode-ide-companion/tsconfig.json @@ -13,7 +13,8 @@ */ "skipLibCheck": true, "rootDir": "src", - "strict": true /* enable all strict type-checking options */ + "strict": true /* enable all strict type-checking options */, + "tsBuildInfoFile": "../../.cache/vscode-ide-companion.tsbuildinfo" /* Additional Checks */ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ diff --git a/scripts/build.js b/scripts/build.js index e6aa14faa9..05a26ac17c 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -30,33 +30,27 @@ if (!existsSync(join(root, 'node_modules'))) { execSync('npm install', { stdio: 'inherit', cwd: root }); } -// build all workspaces/packages -execSync('npm run generate', { stdio: 'inherit', cwd: root }); +const workspaces = [ + '@google/gemini-cli-test-utils', + '@google/gemini-cli-core', + '@google/gemini-cli-a2a-server', + '@google/gemini-cli', + 'gemini-cli-vscode-ide-companion', +]; -if (process.env.CI) { - console.log('CI environment detected. Building workspaces sequentially...'); - execSync('npm run build --workspaces', { stdio: 'inherit', cwd: root }); -} else { - // Build core first because everyone depends on it - console.log('Building @google/gemini-cli-core...'); - execSync('npm run build -w @google/gemini-cli-core', { +function buildWorkspace(workspace) { + console.log(`Building ${workspace}...`); + execSync(`npm run build --workspace ${workspace}`, { stdio: 'inherit', cwd: root, }); +} - // Build the rest in parallel - console.log('Building other workspaces in parallel...'); - const workspaceInfo = JSON.parse( - execSync('npm query .workspace --json', { cwd: root, encoding: 'utf-8' }), - ); - const parallelWorkspaces = workspaceInfo - .map((w) => w.name) - .filter((name) => name !== '@google/gemini-cli-core'); +// build all workspaces/packages +execSync('npm run generate', { stdio: 'inherit', cwd: root }); - execSync( - `npx npm-run-all --parallel ${parallelWorkspaces.map((w) => `"build -w ${w}"`).join(' ')}`, - { stdio: 'inherit', cwd: root }, - ); +for (const workspace of workspaces) { + buildWorkspace(workspace); } // also build container image if sandboxing is enabled