Skip to content

包管理器 ​

YaoXiang 内置的包管理器,提供完整的依赖管理功能。

概述 ​

YaoXiang Package Manager (YPM) 采用声明式依赖管理:

  • 在 yaoxiang.toml 中声明项目依赖
  • yaoxiang.lock 锁定精确版本,确保构建可重现
  • 依赖下载到 vendor 目录

快速开始 ​

bash
# 创建新项目
yx init my-project
cd my-project

# 添加依赖
yx add http
yx add json

# 安装依赖
yx install

# 运行项目
yx run src/main.yx

项目结构 ​

my-project/
├── yaoxiang.toml      # 项目清单
├── yaoxiang.lock      # 依赖锁定文件
├── vendor/            # 依赖存储
└── src/
    └── main.yx

init ​

初始化一个新项目。

用法 ​

bash
yx init <name>

参数 ​

参数类型说明
namestring项目名称

描述 ​

在当前目录或指定路径下创建一个新的 YaoXiang 项目。

创建的文件 ​

  • yaoxiang.toml - 项目清单
  • yaoxiang.lock - 依赖锁定文件
  • src/main.yx - 入口文件
  • .gitignore - Git 忽略配置

示例 ​

bash
# 在当前目录创建项目
yx init my-project

# 输出
# ✨ 项目已创建:my-project
#   my-project/yaoxiang.toml
#   my-project/yaoxiang.lock
#   my-project/src/main.yx
#   my-project/.gitignore

add ​

添加依赖到项目。

用法 ​

bash
yx add <name> [version]
yx add <name> --dev

参数 ​

参数类型说明
namestring包名称
versionstring版本号(可选,默认 *)

选项 ​

选项说明
--dev, -D添加为开发依赖

描述 ​

将依赖添加到项目的 yaoxiang.toml 文件,并更新 yaoxiang.lock。

版本规范 ​

规范说明示例
*任意版本http = "*"
1.0.0精确版本http = "1.0.0"
>=1.0.0最低版本http = ">1.0.0"
~1.0.0兼容版本http = "~1.0.0"
^1.0.0caret 版本http = "^1.0.0"

依赖来源 ​

Registry(默认) ​

bash
yx add http
yx add http 1.0.0

Git 仓库 ​

bash
# 会在 manifest 中生成如下配置
# http = { version = "1.0.0", git = "https://github.com/example/http" }

本地路径 ​

bash
# 会在 manifest 中生成如下配置
# mylib = { version = "0.1.0", path = "./mylib" }

示例 ​

bash
# 添加最新版本
yx add http

# 添加指定版本
yx add http 1.0.0

# 添加版本范围
yx add json ">=2.0.0"

# 添加开发依赖
yx add test-utils --dev
yx add benchmark -D

rm ​

从项目中移除依赖。

用法 ​

bash
yx rm <name>
yx rm <name> --dev

参数 ​

参数类型说明
namestring包名称

选项 ​

选项说明
--dev, -D移除开发依赖

描述 ​

从项目的 yaoxiang.toml 移除指定的依赖,并更新 yaoxiang.lock。

示例 ​

bash
# 移除运行时依赖
yx rm http

# 移除开发依赖
yx rm test-utils --dev

install ​

安装项目依赖。

用法 ​

bash
yx install

描述 ​

读取 yaoxiang.toml 中的依赖声明,执行以下操作:

  1. 解析依赖版本
  2. 检测版本冲突
  3. 下载依赖到 vendor 目录
  4. 生成/更新 yaoxiang.lock

行为 ​

  • 如果没有任何依赖,显示提示信息并退出
  • 如果 vendor 目录已存在,会检查并复用缓存
  • 如果检测到版本冲突,显示错误信息并退出

示例 ​

bash
# 安装所有依赖
yx install

# 输出
# 📦 正在解析依赖...
#   http (1.0.0) [已安装]
#   json (2.0.0) [已缓存]
# ✅ 依赖已安装,锁文件已更新

锁文件更新 ​

install 命令会更新 yaoxiang.lock:

toml
# yaoxiang.lock
[package]
version = 1

[package.http]
version = "1.0.0"
source = "registry"

[package.json]
version = "2.0.0"
source = "registry"

update ​

更新项目依赖。

用法 ​

bash
yx update
yx update <name>

参数 ​

参数类型说明
namestring包名称(可选)

描述 ​

全量更新 ​

不带参数时,更新所有依赖:

  1. 清空当前锁定的版本
  2. 清理 vendor 目录中的旧版本
  3. 重新下载所有依赖
  4. 更新 yaoxiang.lock

单一更新 ​

带参数时,仅更新指定依赖:

  1. 从 vendor 中删除旧版本
  2. 重新下载新版本
  3. 更新 yaoxiang.lock 中对应条目
  4. 其他依赖不受影响

示例 ​

bash
# 更新所有依赖
yx update

# 输出
# 📦 正在更新依赖...
#   http (1.0.0 → 1.1.0)
#   json (2.0.0 → 2.1.0)
# ✅ 已更新 2 个依赖,锁文件已更新

# 更新单个依赖
yx update http

# 输出
# ✅ 已更新 http (1.0.0 → 1.1.0)

list ​

列出项目依赖。

用法 ​

bash
yx list

描述 ​

显示项目中所有依赖,包括:

  • 运行时依赖(来自 [dependencies])
  • 开发依赖(来自 [dev-dependencies])
  • 每个依赖的版本和来源

示例 ​

bash
yx list

# 输出
# 📦 项目依赖
#
# 运行时依赖:
#   http        1.0.0    registry
#   json        2.0.0    registry
#
# 开发依赖:
#   test-utils  0.5.0    registry

配置文件 ​

yaoxiang.toml ​

项目清单文件,声明项目元数据和依赖。

toml
[package]
name = "my-project"
version = "0.1.0"
description = "项目描述"
authors = ["作者 <email@example.com>"]
license = "MIT"

[dependencies]
http = "1.0.0"
json = "*"

[dev-dependencies]
test-utils = "0.5.0"

yaoxiang.lock ​

依赖锁定文件,由包管理器自动生成。

toml
# 由 YaoXiang 包管理器自动生成

[package]
version = 1

[package.http]
version = "1.0.0"
source = "registry"

核心概念 ​

运行时依赖 vs 开发依赖 ​

  • 运行时依赖 ([dependencies]):项目运行时必须有的包
  • 开发依赖 ([dev-dependencies]):仅开发、测试时需要的包

依赖来源 ​

类型配置示例说明
Registryhttp = "1.0.0"从远程包仓库获取
Git{ version = "1.0.0", git = "https://..." }从 Git 仓库获取
Path{ version = "0.1.0", path = "./lib" }从本地路径获取

锁文件 ​

yaoxiang.lock 由包管理器自动生成,请务必提交到版本控制:

  • 确保团队成员使用完全相同的依赖版本
  • 确保 CI 构建可重现
  • 避免"在我机器上能运行"的问题

vendor 目录 ​

依赖下载后存储在 vendor 目录:

  • 由 yx install 和 yx update 自动管理
  • 可以删除后重新运行 install 重建
  • 建议加入 .gitignore,不同团队成员独立管理

常见问题 ​

Q: 依赖版本冲突怎么办? ​

YPM 会检测依赖版本冲突并报错。解决方案:

  1. 调整依赖版本要求
  2. 等待依赖作者修复
  3. 考虑移除冲突的依赖

Q: 如何使用私有包? ​

对于私有包,可以使用 Git 来源:

bash
# 通过 Git URL 添加
# 手动编辑 yaoxiang.toml
[dependencies]
private-pkg = { version = "1.0.0", git = "https://github.com/org/private-pkg" }

Q: vendor 目录可以删除吗? ​

可以。删除后运行 yx install 会重新下载所有依赖。

Q: 如何查看某个包的信息? ​

使用 yx list 查看所有依赖,或查看 yaoxiang.toml。