Менеджер пакетов
Встроенный менеджер пакетов YaoXiang, предоставляющий полный набор функций управления зависимостями.
Обзор
YaoXiang Package Manager (YPM) использует декларативное управление зависимостями:
- Объявляйте зависимости проекта в
yaoxiang.toml yaoxiang.lockфиксирует точные версии, обеспечивая воспроизводимость сборки- Зависимости загружаются в каталог
vendor
Быстрый старт
# 创建新项目
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.yxinit
Инициализация нового проекта.
Использование
yx init <name>Параметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Имя проекта |
Описание
Создаёт новый проект YaoXiang в текущем каталоге или по указанному пути.
Создаваемые файлы
yaoxiang.toml— манифест проектаyaoxiang.lock— файл блокировки зависимостейsrc/main.yx— файл точки входа.gitignore— конфигурация игнорирования Git
Пример
# 在当前目录创建项目
yx init my-project
# 输出
# ✨ 项目已创建:my-project
# my-project/yaoxiang.toml
# my-project/yaoxiang.lock
# my-project/src/main.yx
# my-project/.gitignoreadd
Добавление зависимости в проект.
Использование
yx add <name> [version]
yx add <name> --devПараметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Имя пакета |
version | string | Номер версии (необязательно, по умолчанию *) |
Опции
| Опция | Описание |
|---|---|
--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.0 | Версия Caret | http = "^1.0.0" |
Источники зависимостей
Registry (по умолчанию)
yx add http
yx add http 1.0.0Git-репозиторий
# 会在 manifest 中生成如下配置
# http = { version = "1.0.0", git = "https://github.com/example/http" }Локальный путь
# 会在 manifest 中生成如下配置
# mylib = { version = "0.1.0", path = "./mylib" }Пример
# 添加最新版本
yx add http
# 添加指定版本
yx add http 1.0.0
# 添加版本范围
yx add json ">=2.0.0"
# 添加开发依赖
yx add test-utils --dev
yx add benchmark -Drm
Удаление зависимости из проекта.
Использование
yx rm <name>
yx rm <name> --devПараметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Имя пакета |
Опции
| Опция | Описание |
|---|---|
--dev, -D | Удалить зависимость разработки |
Описание
Удаляет указанную зависимость из yaoxiang.toml проекта и обновляет yaoxiang.lock.
Пример
# 移除运行时依赖
yx rm http
# 移除开发依赖
yx rm test-utils --devinstall
Установка зависимостей проекта.
Использование
yx installОписание
Читает объявления зависимостей из yaoxiang.toml и выполняет следующие действия:
- Разрешает версии зависимостей
- Обнаруживает конфликты версий
- Загружает зависимости в каталог
vendor - Создаёт или обновляет
yaoxiang.lock
Поведение
- Если зависимостей нет, выводит подсказку и завершает работу
- Если каталог
vendorуже существует, проверяет и переиспользует кэш - При обнаружении конфликта версий выводит сообщение об ошибке и завершает работу
Пример
# 安装所有依赖
yx install
# 输出
# 📦 正在解析依赖...
# http (1.0.0) [已安装]
# json (2.0.0) [已缓存]
# ✅ 依赖已安装,锁文件已更新Обновление файла блокировки
Команда install обновляет yaoxiang.lock:
# yaoxiang.lock
[package]
version = 1
[package.http]
version = "1.0.0"
source = "registry"
[package.json]
version = "2.0.0"
source = "registry"update
Обновление зависимостей проекта.
Использование
yx update
yx update <name>Параметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Имя пакета (необязательно) |
Описание
Полное обновление
Без аргументов обновляет все зависимости:
- Очищает текущие зафиксированные версии
- Удаляет старые версии из каталога
vendor - Заново загружает все зависимости
- Обновляет
yaoxiang.lock
Обновление одной зависимости
С аргументом обновляет только указанную зависимость:
- Удаляет старую версию из
vendor - Загружает новую версию
- Обновляет соответствующую запись в
yaoxiang.lock - Остальные зависимости не затрагиваются
Пример
# 更新所有依赖
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
Вывод списка зависимостей проекта.
Использование
yx listОписание
Отображает все зависимости проекта, включая:
- Зависимости времени выполнения (из
[dependencies]) - Зависимости разработки (из
[dev-dependencies]) - Версию и источник каждой зависимости
Пример
yx list
# 输出
# 📦 项目依赖
#
# 运行时依赖:
# http 1.0.0 registry
# json 2.0.0 registry
#
# 开发依赖:
# test-utils 0.5.0 registryФайлы конфигурации
yaoxiang.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
Файл блокировки зависимостей, автоматически генерируемый менеджером пакетов.
# 由 YaoXiang 包管理器自动生成
[package]
version = 1
[package.http]
version = "1.0.0"
source = "registry"Ключевые концепции
Зависимости времени выполнения vs зависимости разработки
- Зависимости времени выполнения (
[dependencies]): пакеты, необходимые во время выполнения проекта - Зависимости разработки (
[dev-dependencies]): пакеты, необходимые только для разработки и тестирования
Источники зависимостей
| Тип | Пример конфигурации | Описание |
|---|---|---|
| Registry | http = "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, чтобы каждый член команды управлял зависимостями независимо
Часто задаваемые вопросы
В: Что делать при конфликте версий зависимостей?
YPM обнаруживает конфликты версий зависимостей и сообщает об ошибке. Решения:
- Скорректировать требования к версиям зависимостей
- Дождаться исправления от автора зависимости
- Рассмотреть возможность удаления конфликтующей зависимости
В: Как использовать приватные пакеты?
Для приватных пакетов можно использовать источник Git:
# 通过 Git URL 添加
# 手动编辑 yaoxiang.toml
[dependencies]
private-pkg = { version = "1.0.0", git = "https://github.com/org/private-pkg" }В: Можно ли удалить каталог vendor?
Да. После удаления запустите yx install, и все зависимости будут загружены заново.
В: Как посмотреть информацию о пакете?
Используйте yx list для просмотра всех зависимостей или откройте yaoxiang.toml.
