Менеджер пакетов
Встроенный менеджер пакетов YaoXiang, предоставляющий полный функционал управления зависимостями.
Обзор
YaoXiang Package Manager (YPM) использует декларативное управление зависимостями:
- Объявление зависимостей проекта в
yaoxiang.toml - Блокировка точных версий в
yaoxiang.lockдля обеспечения воспроизводимости сборки - Загрузка зависимостей в каталог
vendor
Быстрый старт
# Создание нового проекта
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.yxinit
Инициализация нового проекта.
Использование
yaoxiang init <name>Параметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Название проекта |
Описание
Создание нового проекта YaoXiang в текущем каталоге или по указанному пути.
Создаваемые файлы
yaoxiang.toml— манифест проектаyaoxiang.lock— файл блокировки зависимостейsrc/main.yx— точка входа.gitignore— конфигурация игнорируемых файлов Git
Примеры
# Создание проекта в текущем каталоге
yaoxiang init my-project
# Вывод
# ✨ Проект создан: my-project
# my-project/yaoxiang.toml
# my-project/yaoxiang.lock
# my-project/src/main.yx
# my-project/.gitignoreadd
Добавление зависимостей в проект.
Использование
yaoxiang add <name> [version]
yaoxiang add <name> --devПараметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Название пакета |
version | string | Версия (необязательно, по умолчанию *) |
Опции
| Опция | Описание |
|---|---|
--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.0 | Caret версия | http = "^1.0.0" |
Источники зависимостей
Registry (по умолчанию)
yaoxiang add http
yaoxiang add http 1.0.0Git репозиторий
# В манифесте появится следующая конфигурация
# http = { version = "1.0.0", git = "https://github.com/example/http" }Локальный путь
# В манифесте появится следующая конфигурация
# mylib = { version = "0.1.0", path = "./mylib" }Примеры
# Добавить последнюю версию
yaoxiang add http
# Добавить указанную версию
yaoxiang add http 1.0.0
# Добавить диапазон версий
yaoxiang add json ">=2.0.0"
# Добавить dev-зависимость
yaoxiang add test-utils --dev
yaoxiang add benchmark -Drm
Удаление зависимостей из проекта.
Использование
yaoxiang rm <name>
yaoxiang rm <name> --devПараметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Название пакета |
Опции
| Опция | Описание |
|---|---|
--dev, -D | Удалить dev-зависимость |
Описание
Удаление указанной зависимости из файла yaoxiang.toml проекта и обновление yaoxiang.lock.
Примеры
# Удалить runtime-зависимость
yaoxiang rm http
# Удалить dev-зависимость
yaoxiang rm test-utils --devinstall
Установка зависимостей проекта.
Использование
yaoxiang installОписание
Чтение объявлений зависимостей из yaoxiang.toml и выполнение следующих операций:
- Разрешение версий зависимостей
- Обнаружение конфликтов версий
- Загрузка зависимостей в каталог
vendor - Генерация/обновление
yaoxiang.lock
Поведение
- Если зависимости отсутствуют, выводится информационное сообщение и программа завершается
- Если каталог
vendorуже существует, выполняется проверка и повторное использование кэша - При обнаружении конфликта версий выводится сообщение об ошибке и программа завершается
Примеры
# Установка всех зависимостей
yaoxiang 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
Обновление зависимостей проекта.
Использование
yaoxiang update
yaoxiang update <name>Параметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Название пакета (необязательно) |
Описание
Полное обновление
При вызове без параметров обновляются все зависимости:
- Очистка текущих заблокированных версий
- Очистка старых версий в каталоге
vendor - Повторная загрузка всех зависимостей
- Обновление
yaoxiang.lock
Обновление отдельной зависимости
При указании параметра обновляется только выбранная зависимость:
- Удаление старой версии из
vendor - Повторная загрузка новой версии
- Обновление соответствующей записи в
yaoxiang.lock - Остальные зависимости остаются без изменений
Примеры
# Обновление всех зависимостей
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
Список зависимостей проекта.
Использование
yaoxiang listОписание
Отображение всех зависимостей проекта, включая:
- Runtime зависимости (из
[dependencies]) - Dev-зависимости (из
[dev-dependencies]) - Версия и источник каждой зависимости
Примеры
yaoxiang list
# Вывод
# 📦 Зависимости проекта
#
# Runtime зависимости:
# http 1.0.0 registry
# json 2.0.0 registry
#
# Dev-зависимости:
# 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"Основные концепции
Runtime зависимости vs dev-зависимости
- Runtime зависимости (
[dependencies]): пакеты, необходимые для работы проекта - Dev-зависимости (
[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:
- Автоматически управляется командами
yaoxiang installиyaoxiang update - Можно удалить и пересоздать повторным запуском
install - Рекомендуется добавить в
.gitignore, каждый член команды управляет независимо
Часто задаваемые вопросы
Q: Что делать при конфликте версий зависимостей?
YPM обнаруживает конфликты версий зависимостей и сообщает об ошибках. Решения:
- Скорректируйте требования к версиям зависимостей
- Дождитесь исправления от автора зависимости
- Рассмотрите возможность удаления конфликтующей зависимости
Q: Как использовать приватные пакеты?
Для приватных пакетов можно использовать источник Git:
# Добавление через 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.
