Skip to content

Commit 584286c

Browse files
authored
fix(deps): externalize tree-sitter (google-gemini#840)
Submitting without approval to fix broken deployment on main. But also, we should lock this down.
1 parent d0b7822 commit 584286c

6 files changed

Lines changed: 59 additions & 20 deletions

File tree

esbuild.config.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @license
3+
* Copyright 2025 Google LLC
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
import esbuild from 'esbuild';
8+
9+
esbuild
10+
.build({
11+
entryPoints: ['packages/cli/index.ts'],
12+
bundle: true,
13+
outfile: 'bundle/gemini.js',
14+
platform: 'node',
15+
format: 'esm',
16+
banner: {
17+
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);`,
18+
},
19+
external: [
20+
'tree-sitter',
21+
'tree-sitter-c-sharp',
22+
'tree-sitter-go',
23+
'tree-sitter-java',
24+
'tree-sitter-python',
25+
'tree-sitter-rust',
26+
'tree-sitter-typescript',
27+
],
28+
})
29+
.catch(() => process.exit(1));

eslint.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export default tseslint.config(
155155
},
156156
// extra settings for scripts that we run directly with node
157157
{
158-
files: ['./scripts/**/*.js'],
158+
files: ['./scripts/**/*.js', 'esbuild.config.js'],
159159
languageOptions: {
160160
globals: {
161161
process: 'readonly',

package-lock.json

Lines changed: 8 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"auth:docker": "gcloud auth configure-docker us-west1-docker.pkg.dev",
2626
"auth": "npm run auth:npm && npm run auth:docker",
2727
"prerelease:dev": "npm run prerelease:version --workspaces && npm run prerelease:deps --workspaces",
28-
"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",
28+
"bundle": "npm run generate && node esbuild.config.js",
2929
"build:cli": "npm run build --workspace packages/cli",
3030
"build:core": "npm run build --workspace packages/core",
3131
"build:packages": "npm run build:core && npm run build:cli",
@@ -42,7 +42,8 @@
4242
"files": [
4343
"bundle/",
4444
"README.md",
45-
"LICENSE"
45+
"LICENSE",
46+
"node_modules/tree-sitter-*/build/Release/*.node"
4647
],
4748
"devDependencies": {
4849
"@types/micromatch": "^4.0.9",
@@ -66,6 +67,12 @@
6667
"yargs": "^17.7.2"
6768
},
6869
"dependencies": {
69-
"tree-sitter-rust": "^0.21.0"
70+
"tree-sitter": "^0.21.0",
71+
"tree-sitter-c-sharp": "^0.21.0",
72+
"tree-sitter-go": "^0.21.0",
73+
"tree-sitter-java": "^0.21.0",
74+
"tree-sitter-python": "^0.21.0",
75+
"tree-sitter-rust": "^0.21.0",
76+
"tree-sitter-typescript": "^0.21.0"
7077
}
7178
}

packages/core/package.json

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,6 @@
2929
"minimatch": "^10.0.0",
3030
"shell-quote": "^1.8.2",
3131
"strip-ansi": "^7.1.0",
32-
"tree-sitter": "^0.21.0",
33-
"tree-sitter-c-sharp": "^0.21.0",
34-
"tree-sitter-go": "^0.21.0",
35-
"tree-sitter-java": "^0.21.0",
36-
"tree-sitter-python": "^0.21.0",
37-
"tree-sitter-rust": "^0.21.0",
38-
"tree-sitter-typescript": "^0.21.0",
3932
"@opentelemetry/api": "^1.9.0",
4033
"@opentelemetry/sdk-node": "^0.52.0",
4134
"@opentelemetry/exporter-trace-otlp-grpc": "^0.52.0",

scripts/esbuild-banner.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
* @license
3+
* Copyright 2025 Google LLC
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
// esbuild-banner.js
8+
import { createRequire } from 'module';
9+
const require = createRequire(import.meta.url);
10+
globalThis.__filename = require('url').fileURLToPath(import.meta.url);
11+
globalThis.__dirname = require('path').dirname(globalThis.__filename);

0 commit comments

Comments
 (0)