Skip to content

Менеджер пакетов

Встроенный менеджер пакетов YaoXiang, предоставляющий полный функционал управления зависимостями.

Обзор

YaoXiang Package Manager (YPM) использует декларативное управление зависимостями:

  • Объявление зависимостей проекта в yaoxiang.toml
  • Блокировка точных версий в yaoxiang.lock для обеспечения воспроизводимости сборки
  • Загрузка зависимостей в каталог vendor

Быстрый старт

bash
# Создание нового проекта
yaoxiang init my-project
cd my-project

# Добавление зависимостей
yaoxiang add http
yaoxiang add json

# Установка зависимостей
yaoxiang install

# Запуск проекта
yaoxiang run src/main.yx

Структура проекта

my-project/
├── yaoxiang.toml      # Манифест проекта
├── yaoxiang.lock      # Файл блокировки зависимостей
├── vendor/            # Хранилище зависимостей
└── src/
    └── main.yx

init

Инициализация нового проекта.

Использование

bash
yaoxiang init <name>

Параметры

ПараметрТипОписание
namestringНазвание проекта

Описание

Создание нового проекта YaoXiang в текущем каталоге или по указанному пути.

Создаваемые файлы

  • yaoxiang.toml — манифест проекта
  • yaoxiang.lock — файл блокировки зависимостей
  • src/main.yx — точка входа
  • .gitignore — конфигурация игнорируемых файлов Git

Примеры

bash
# Создание проекта в текущем каталоге
yaoxiang init my-project

# Вывод
# ✨ Проект создан: my-project
#   my-project/yaoxiang.toml
#   my-project/yaoxiang.lock
#   my-project/src/main.yx
#   my-project/.gitignore

add

Добавление зависимостей в проект.

Использование

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

Параметры

ПараметрТипОписание
namestringНазвание пакета
versionstringВерсия (необязательно, по умолчанию *)

Опции

ОпцияОписание
--dev, -DДобавить как dev-зависимость

Описание

Добавление зависимости в файл 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
yaoxiang add http
yaoxiang add http 1.0.0

Git репозиторий

bash
# В манифесте появится следующая конфигурация
# http = { version = "1.0.0", git = "https://github.com/example/http" }

Локальный путь

bash
# В манифесте появится следующая конфигурация
# mylib = { version = "0.1.0", path = "./mylib" }

Примеры

bash
# Добавить последнюю версию
yaoxiang add http

# Добавить указанную версию
yaoxiang add http 1.0.0

# Добавить диапазон версий
yaoxiang add json ">=2.0.0"

# Добавить dev-зависимость
yaoxiang add test-utils --dev
yaoxiang add benchmark -D

rm

Удаление зависимостей из проекта.

Использование

bash
yaoxiang rm <name>
yaoxiang rm <name> --dev

Параметры

ПараметрТипОписание
namestringНазвание пакета

Опции

ОпцияОписание
--dev, -DУдалить dev-зависимость

Описание

Удаление указанной зависимости из файла yaoxiang.toml проекта и обновление yaoxiang.lock.

Примеры

bash
# Удалить runtime-зависимость
yaoxiang rm http

# Удалить dev-зависимость
yaoxiang rm test-utils --dev

install

Установка зависимостей проекта.

Использование

bash
yaoxiang install

Описание

Чтение объявлений зависимостей из yaoxiang.toml и выполнение следующих операций:

  1. Разрешение версий зависимостей
  2. Обнаружение конфликтов версий
  3. Загрузка зависимостей в каталог vendor
  4. Генерация/обновление yaoxiang.lock

Поведение

  • Если зависимости отсутствуют, выводится информационное сообщение и программа завершается
  • Если каталог vendor уже существует, выполняется проверка и повторное использование кэша
  • При обнаружении конфликта версий выводится сообщение об ошибке и программа завершается

Примеры

bash
# Установка всех зависимостей
yaoxiang 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
yaoxiang update
yaoxiang update <name>

Параметры

ПараметрТипОписание
namestringНазвание пакета (необязательно)

Описание

Полное обновление

При вызове без параметров обновляются все зависимости:

  1. Очистка текущих заблокированных версий
  2. Очистка старых версий в каталоге vendor
  3. Повторная загрузка всех зависимостей
  4. Обновление yaoxiang.lock

Обновление отдельной зависимости

При указании параметра обновляется только выбранная зависимость:

  1. Удаление старой версии из vendor
  2. Повторная загрузка новой версии
  3. Обновление соответствующей записи в yaoxiang.lock
  4. Остальные зависимости остаются без изменений

Примеры

bash
# Обновление всех зависимостей
yaoxiang update

# Вывод
# 📦 Обновление зависимостей...
#   http (1.0.0 → 1.1.0)
#   json (2.0.0 → 2.1.0)
# ✅ Обновлено 2 зависимости, файл блокировки обновлен

# Обновление одной зависимости
yaoxiang update http

# Вывод
# ✅ Обновлен http (1.0.0 → 1.1.0)

list

Список зависимостей проекта.

Использование

bash
yaoxiang list

Описание

Отображение всех зависимостей проекта, включая:

  • Runtime зависимости (из [dependencies])
  • Dev-зависимости (из [dev-dependencies])
  • Версия и источник каждой зависимости

Примеры

bash
yaoxiang list

# Вывод
# 📦 Зависимости проекта
#
# Runtime зависимости:
#   http        1.0.0    registry
#   json        2.0.0    registry
#
# Dev-зависимости:
#   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"

Основные концепции

Runtime зависимости vs dev-зависимости

  • Runtime зависимости ([dependencies]): пакеты, необходимые для работы проекта
  • Dev-зависимости ([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:

  • Автоматически управляется командами yaoxiang install и yaoxiang 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?

Да. После удаления повторный запуск yaoxiang install загрузит все зависимости заново.

Q: Как просмотреть информацию о пакете?

Используйте yaoxiang list для просмотра всех зависимостей или откройте yaoxiang.toml.