包结构概览
此 Monorepo 包含两个主要包:@google/gemini-cli 与 @google/gemini-cli-core。
@google/gemini-cli
这是 Gemini CLI 的主包,负责用户界面、命令解析以及所有面向用户的功能。
当该包发布时,会打包成一个单一可执行文件,其中包含所有依赖,包括
@google/gemini-cli-core。因此,无论用户通过 npm install -g @google/gemini-cli
安装,还是直接运行 npx @google/gemini-cli,使用的都是这个自包含的可执行体。
@google/gemini-cli-core
该包承载与 Gemini API 交互的核心逻辑,负责发送 API 请求、处理身份验证以及管理本地缓存。
此包不会再被打包。发布时以标准 Node.js 包形式提供,包含自身依赖,因而可在其他项目中独立使用。dist 目录下的所有转译后 js 代码都会包含在包内。
NPM Workspaces
本项目使用 NPM Workspaces 管理 Monorepo 中的各个包,从而在项目根目录统一管理依赖并跨包运行脚本。
工作方式
根目录的 package.json 定义了本项目的 workspace:
{
"workspaces": ["packages/*"]
}
这告诉 NPM:packages 目录中的每个文件夹都是 workspace 中单独管理的包。
Workspaces 的优势
- 简化依赖管理:在项目根目录执行
npm install,即可为 workspace 内所有包安装依赖并完成互相链接,无需在每个包目录单独执行。 - 自动联结:workspace 中的包可以互相依赖。运行
npm install时,NPM 会自动创建包之间的符号链接,因此当你修改一个包时,依赖它的其他包会立即生效。 - 简化脚本执行:可在项目根目录配合
--workspace标志调用任一包的脚本。例如要运行cli包的build脚本,可以执行npm run build --workspace @google/gemini-cli。