mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
This commit modifies the packaging setup to allow the CLI to be executed directly from its GitHub URL using `npx`, for example: `npx https://github.com/google-gemini/gemini-cli` (once merged to main). This is achieved without requiring the bundle to be checked into the repository. Key changes and motivations: - Modify `scripts.prepare` to run `npm run bundle`: Ensures the CLI bundle is generated automatically when `npx` installs the package from a git URL. This replaces previous approaches (e.g., using `prepack`) which were not consistently triggered in the `npx` environment. - Update `scripts.bundle` to use a direct path for `esbuild` and externalize `sqlite3`: Using `node_modules/.bin/esbuild` provides a more reliable way to invoke the bundler. Externalizing `sqlite3` is crucial for correctly handling its native addon, preventing runtime errors. - Add `bin`, `files`, and root `sqlite3` dependency: - The `bin` field defines the `gemini` command. - The `files` array ensures the generated `bundle/` directory is recognized by npm. - `sqlite3` is added as a root dependency to ensure it's installed by `npx` when `gemini-code` is fetched, allowing the externalized module to be resolved. These changes collectively ensure that the necessary build artifacts are created on-the-fly during `npx` installation, providing a seamless execution experience directly from the GitHub repository URL.
61 lines
2.3 KiB
JSON
61 lines
2.3 KiB
JSON
{
|
|
"name": "gemini-code",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"scripts": {
|
|
"build": "scripts/build.sh",
|
|
"build:sandbox": "scripts/build_sandbox.sh",
|
|
"build:all": "npm run build && npm run build:sandbox",
|
|
"clean": "scripts/clean.sh",
|
|
"prepare": "npm run bundle",
|
|
"test": "npm run test --workspaces",
|
|
"coverage": "npm run coverage --workspaces --if-present",
|
|
"start": "NODE_ENV=development scripts/start.sh",
|
|
"debug": "NODE_ENV=development DEBUG=1 scripts/start.sh",
|
|
"lint:fix": "eslint . --fix",
|
|
"lint": "eslint . --ext .ts,.tsx",
|
|
"typecheck": "npm run typecheck --workspaces --if-present",
|
|
"format": "prettier --write .",
|
|
"preflight": "npm run format --workspaces --if-present && npm run lint && npm run test --workspaces --if-present",
|
|
"auth:npm": "npx google-artifactregistry-auth",
|
|
"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": "node_modules/.bin/esbuild packages/cli/index.ts --bundle --outfile=bundle/gemini.js --platform=node --format=esm --external:sqlite3 --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"
|
|
},
|
|
"bin": {
|
|
"gemini": "bundle/gemini.js"
|
|
},
|
|
"files": [
|
|
"bundle/",
|
|
"packages/cli/dist",
|
|
"packages/cli/package.json",
|
|
"packages/server/dist",
|
|
"packages/server/package.json"
|
|
],
|
|
"dependencies": {
|
|
"sqlite3": "^5.1.7"
|
|
},
|
|
"devDependencies": {
|
|
"@types/mime-types": "^2.1.4",
|
|
"@vitest/coverage-v8": "^3.1.1",
|
|
"esbuild": "^0.25.4",
|
|
"eslint": "^9.24.0",
|
|
"eslint-config-prettier": "^10.1.2",
|
|
"eslint-plugin-import": "^2.31.0",
|
|
"eslint-plugin-license-header": "^0.8.0",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
"globals": "^16.0.0",
|
|
"lodash": "^4.17.21",
|
|
"prettier": "^3.5.3",
|
|
"react-devtools-core": "^4.28.5",
|
|
"typescript-eslint": "^8.30.1",
|
|
"yargs": "^17.7.2"
|
|
}
|
|
}
|