包概述
此 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 文件夹中所有转译后的 JavaScript 代码都包含在此包中。
NPM Workspaces
本项目使用 NPM Workspaces 来管理此 monorepo 中的包。通过允许我们在项目根目录管理依赖项和运行跨多个包的脚本,这简化了开发。
工作原理
根目录的 package.json 文件定义了此项目的 workspaces:
json
{
"workspaces": ["packages/*"]
}这告诉 NPM,packages 目录内的任何文件夹都是一个独立的包,应作为 workspace 的一部分进行管理。
Workspaces 的优势
- 简化的依赖管理:从项目根目录运行
npm install将安装 workspace 中所有包的依赖项,并将它们链接在一起。这意味着您无需在每个包的目录中运行npm install。 - 自动链接:workspace 中的包可以相互依赖。运行
npm install时,NPM 会在包之间自动创建符号链接。这意味着当您在一个包中进行更改时,这些更改会立即提供给依赖于它的其他包。 - 简化的脚本执行:您可以使用
--workspace标志从项目根目录运行任何包中的脚本。例如,要运行cli包中的build脚本,您可以运行npm run build --workspace @google/gemini-cli。