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.0Версия Carethttp = "^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, чтобы каждый член команды управлял зависимостями независимо

Часто задаваемые вопросы ​

В: Что делать при конфликте версий зависимостей? ​

YPM обнаруживает конфликты версий зависимостей и сообщает об ошибке. Решения:

  1. Скорректировать требования к версиям зависимостей
  2. Дождаться исправления от автора зависимости
  3. Рассмотреть возможность удаления конфликтующей зависимости

В: Как использовать приватные пакеты? ​

Для приватных пакетов можно использовать источник Git:

bash
# 通过 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.