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