fix(deps): externalize tree-sitter (#840)

Submitting without approval to fix broken deployment on main. But also, we should lock this down.
This commit is contained in:
matt korwel 2025-06-08 02:05:55 -07:00 committed by GitHub
parent d0b78225a1
commit 584286cfd9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 59 additions and 20 deletions

29
esbuild.config.js Normal file
View File

@ -0,0 +1,29 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import esbuild from 'esbuild';
esbuild
.build({
entryPoints: ['packages/cli/index.ts'],
bundle: true,
outfile: 'bundle/gemini.js',
platform: 'node',
format: 'esm',
banner: {
js: `import { createRequire } from 'module'; const require = createRequire(import.meta.url); globalThis.__filename = require('url').fileURLToPath(import.meta.url); globalThis.__dirname = require('path').dirname(globalThis.__filename);`,
},
external: [
'tree-sitter',
'tree-sitter-c-sharp',
'tree-sitter-go',
'tree-sitter-java',
'tree-sitter-python',
'tree-sitter-rust',
'tree-sitter-typescript',
],
})
.catch(() => process.exit(1));

View File

@ -155,7 +155,7 @@ export default tseslint.config(
},
// extra settings for scripts that we run directly with node
{
files: ['./scripts/**/*.js'],
files: ['./scripts/**/*.js', 'esbuild.config.js'],
languageOptions: {
globals: {
process: 'readonly',

17
package-lock.json generated
View File

@ -11,7 +11,13 @@
"packages/*"
],
"dependencies": {
"tree-sitter-rust": "^0.21.0"
"tree-sitter": "^0.21.0",
"tree-sitter-c-sharp": "^0.21.0",
"tree-sitter-go": "^0.21.0",
"tree-sitter-java": "^0.21.0",
"tree-sitter-python": "^0.21.0",
"tree-sitter-rust": "^0.21.0",
"tree-sitter-typescript": "^0.21.0"
},
"bin": {
"gemini": "bundle/gemini.js"
@ -10404,14 +10410,7 @@
"fast-glob": "^3.3.3",
"minimatch": "^10.0.0",
"shell-quote": "^1.8.2",
"strip-ansi": "^7.1.0",
"tree-sitter": "^0.21.0",
"tree-sitter-c-sharp": "^0.21.0",
"tree-sitter-go": "^0.21.0",
"tree-sitter-java": "^0.21.0",
"tree-sitter-python": "^0.21.0",
"tree-sitter-rust": "^0.21.0",
"tree-sitter-typescript": "^0.21.0"
"strip-ansi": "^7.1.0"
},
"devDependencies": {
"@types/diff": "^7.0.2",

View File

@ -25,7 +25,7 @@
"auth:docker": "gcloud auth configure-docker us-west1-docker.pkg.dev",
"auth": "npm run auth:npm && npm run auth:docker",
"prerelease:dev": "npm run prerelease:version --workspaces && npm run prerelease:deps --workspaces",
"bundle": "npm run generate && node_modules/.bin/esbuild packages/cli/index.ts --bundle --outfile=bundle/gemini.js --platform=node --format=esm --banner:js=\"import { createRequire } from 'module'; const require = createRequire(import.meta.url); globalThis.__filename = require('url').fileURLToPath(import.meta.url); globalThis.__dirname = require('path').dirname(globalThis.__filename);\" && bash scripts/copy_bundle_assets.sh",
"bundle": "npm run generate && node esbuild.config.js",
"build:cli": "npm run build --workspace packages/cli",
"build:core": "npm run build --workspace packages/core",
"build:packages": "npm run build:core && npm run build:cli",
@ -42,7 +42,8 @@
"files": [
"bundle/",
"README.md",
"LICENSE"
"LICENSE",
"node_modules/tree-sitter-*/build/Release/*.node"
],
"devDependencies": {
"@types/micromatch": "^4.0.9",
@ -66,6 +67,12 @@
"yargs": "^17.7.2"
},
"dependencies": {
"tree-sitter-rust": "^0.21.0"
"tree-sitter": "^0.21.0",
"tree-sitter-c-sharp": "^0.21.0",
"tree-sitter-go": "^0.21.0",
"tree-sitter-java": "^0.21.0",
"tree-sitter-python": "^0.21.0",
"tree-sitter-rust": "^0.21.0",
"tree-sitter-typescript": "^0.21.0"
}
}

View File

@ -29,13 +29,6 @@
"minimatch": "^10.0.0",
"shell-quote": "^1.8.2",
"strip-ansi": "^7.1.0",
"tree-sitter": "^0.21.0",
"tree-sitter-c-sharp": "^0.21.0",
"tree-sitter-go": "^0.21.0",
"tree-sitter-java": "^0.21.0",
"tree-sitter-python": "^0.21.0",
"tree-sitter-rust": "^0.21.0",
"tree-sitter-typescript": "^0.21.0",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/sdk-node": "^0.52.0",
"@opentelemetry/exporter-trace-otlp-grpc": "^0.52.0",

11
scripts/esbuild-banner.js Normal file
View File

@ -0,0 +1,11 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
// esbuild-banner.js
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
globalThis.__filename = require('url').fileURLToPath(import.meta.url);
globalThis.__dirname = require('path').dirname(globalThis.__filename);