infra: add multipackage support (#34)

This commit is contained in:
Brandon Keiji 2025-04-18 14:37:02 -07:00 committed by GitHub
parent f51ca774cf
commit 52683dafc3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 91 additions and 707 deletions

716
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,10 +8,12 @@
],
"scripts": {
"build": "npm run build --workspaces",
"clean": "npm run clean --workspaces",
"test": "npm run test --workspaces",
"start": "node ./scripts/check-build-status.js && npm run start --workspace=@google/gemini-code -- \"$@\"",
"start": "node ./scripts/check-build-status.js && node node_modules/@gemini-code/cli/dist -- \"$@\"",
"lint": "eslint . --ext .ts,.tsx",
"typecheck": "tsc --noEmit --jsx react",
"format": "prettier --write .",
"artifactregistry-login": "npx google-artifactregistry-auth"
},
"devDependencies": {

View File

@ -1,9 +1,9 @@
{
"name": "@google/gemini-code",
"name": "@gemini-code/cli",
"version": "1.0.0",
"description": "Gemini Code CLI",
"type": "module",
"main": "gemini.js",
"main": "src/gemini.js",
"scripts": {
"build": "tsc && cp package.json README.md ../../LICENSE dist/ && touch dist/.last_build",
"start": "node dist/gemini.js",
@ -16,6 +16,7 @@
],
"dependencies": {
"@google/genai": "^0.8.0",
"@gemini-code/server": "1.0.0",
"diff": "^7.0.0",
"dotenv": "^16.4.7",
"fast-glob": "^3.3.3",

View File

@ -12,6 +12,10 @@ import { WriteFileTool } from './tools/write-file.tool.js';
import { WebFetchTool } from './tools/web-fetch.tool.js';
import { globalConfig } from './config/config.js';
// TODO(b/411707095): remove. left here as an example of how to pull in inter-package deps
import { helloServer } from '@gemini-code/server'
helloServer();
async function main() {
// Configure tools
registerTools(globalConfig.getTargetDir());

View File

@ -1,13 +1,19 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src",
"outDir": "dist",
"rootDir": ".",
"jsx": "react",
"lib": ["DOM", "DOM.Iterable", "ES2020"],
"module": "Node16",
"target": "ES2020"
"target": "ES2020",
"paths": {
"@gemini-code/*": ["./packages/*"]
}
},
"exclude": ["node_modules", "dist"],
"include": ["src"]
"include": ["src"],
"references": [
{ "path": "../server" },
]
}

View File

@ -0,0 +1,6 @@
Nested package template. Either fill this out with "backend" functionality or create similar packages that you want built separate from the CLI.
To use this package from another dependent package in this monorepo:
1. add `"@gemini-code/server"` to the dependent package's `package.json`
1. import in a dependenant by calling `import { } from "@gemini-code/server"`

View File

@ -0,0 +1,24 @@
{
"name": "@gemini-code/server",
"version": "1.0.0",
"description": "Gemini Code Server",
"type": "module",
"main": "src/index.js",
"scripts": {
"build": "tsc && cp package.json dist/",
"clean": "rm -rf dist",
"lint": "eslint . --ext .ts,.tsx",
"format": "prettier --write ."
},
"files": [
"dist"
],
"dependencies": {},
"devDependencies": {
"typescript": "^5.3.3"
},
"engines": {
"node": ">=18"
}
}

View File

@ -0,0 +1,3 @@
export function helloServer() {
// TODO: add more things in this package
}

View File

@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": ".",
"lib": ["DOM", "DOM.Iterable", "ES2020"],
"module": "Node16",
"target": "ES2022",
"composite": true,
},
"exclude": ["node_modules", "dist"],
}

View File

@ -5,6 +5,13 @@
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"sourceMap": true
"sourceMap": true,
"composite": true,
// MONOREPO STUFF
"incremental": true,
"target": "ES2020",
"module": "Node16",
"declaration": true,
"moduleResolution": "node16",
}
}