@@ -73,38 +73,30 @@ buildNpmPackage (finalAttrs: {
7373 nodejs_22 . python
7474 ] ;
7575
76+ npmBuildScript = "bundle" ;
77+
7678 installPhase = ''
7779 runHook preInstall
78- mkdir -p $out/{bin,share/gemini-cli}
7980
81+ mkdir -p $out/{bin,share}
82+ cp -r bundle $out/share/gemini-cli
83+
84+ # We only want to keep optionalDependencies (like @lydell/node-pty) to keep the closure size small,
85+ # as regular dependencies are already bundled via esbuild into gemini.js.
86+ jq '.dependencies = {} | del(.devDependencies) | del(.workspaces)' package.json > package.json.tmp && mv package.json.tmp package.json
8087 npm prune --omit=dev
88+ rm -rf node_modules/.bin
8189
82- # Remove python files to prevent python from getting into the closure
83- find node_modules -name "*.py" -delete
8490 # keytar/build has gyp-mac-tool with a Python shebang that gets patched,
8591 # creating a python3 reference in the closure
86- rm -rf node_modules/keytar/build
92+ find node_modules -path "*/build/*" -type f -not -name "*.node" -delete
93+ find node_modules -type d -empty -delete
8794
8895 cp -r node_modules $out/share/gemini-cli/
8996
90- rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli
91- rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-core
92- rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-a2a-server
93- rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-test-utils
94- rm -f $out/share/gemini-cli/node_modules/gemini-cli-vscode-ide-companion
95- cp -r packages/cli $out/share/gemini-cli/node_modules/@google/gemini-cli
96- cp -r packages/core $out/share/gemini-cli/node_modules/@google/gemini-cli-core
97- cp -r packages/a2a-server $out/share/gemini-cli/node_modules/@google/gemini-cli-a2a-server
98-
99- rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-core/dist/docs/CONTRIBUTING.md
100-
101- ln -s $out/share/gemini-cli/node_modules/@google/gemini-cli/dist/index.js $out/bin/gemini
102- chmod +x "$out/bin/gemini"
97+ rm -f $out/share/gemini-cli/docs/CONTRIBUTING.md
10398
104- # Clean up any remaining references to npmDeps in node_modules metadata
105- find $out/share/gemini-cli/node_modules -name "package-lock.json" -delete
106- find $out/share/gemini-cli/node_modules -name ".package-lock.json" -delete
107- find $out/share/gemini-cli/node_modules -name "config.gypi" -delete
99+ ln -s $out/share/gemini-cli/gemini.js $out/bin/gemini
108100
109101 runHook postInstall
110102 '' ;
0 commit comments