Управление зависимостями
Wippy использует систему зависимостей на основе файла блокировки. Модули публикуются в хаб, объявляются как зависимости в исходном коде и разрешаются в файл wippy.lock, который отслеживает точные версии.
Файлы проекта
wippy.lock
Файл блокировки отслеживает структуру каталогов проекта и закреплённые зависимости:
directories:
modules: .wippy
src: ./src
modules:
- name: acme/http
version: v1.2.0
hash: 4ea816fe84ca58a1f0869e5ca6afa93d6ddd72fa09e1162d9e600a7fbf39f0a2
- name: acme/sql
version: v2.0.1
hash: b3f9c8e12a456d7890abcdef1234567890abcdef1234567890abcdef12345678
| Поле | Описание |
|---|---|
directories.modules |
Где хранятся загруженные модули (по умолчанию: .wippy) |
directories.src |
Где находится исходный код (по умолчанию: ./src) |
modules[].name |
Идентификатор модуля в формате org/module |
modules[].version |
Закреплённая семантическая версия |
modules[].hash |
Хэш содержимого для проверки целостности |
wippy.yaml
Метаданные модуля для публикации. Требуется только при публикации собственного модуля:
organization: acme
module: http
version: 1.2.0
description: HTTP utilities for Wippy
license: MIT
repository: https://github.com/acme/wippy-http
keywords:
- http
- web
| Поле | Обязательное | Описание |
|---|---|---|
organization |
Да | Строчные буквы, буквенно-цифровые с дефисами |
module |
Да | Строчные буквы, буквенно-цифровые с дефисами |
version |
Нет | Семантическая версия (устанавливается при публикации) |
description |
Нет | Описание модуля |
license |
Нет | Идентификатор лицензии SPDX |
repository |
Нет | URL репозитория с исходным кодом |
homepage |
Нет | Домашняя страница проекта |
keywords |
Нет | Ключевые слова для поиска |
authors |
Нет | Список авторов |
Объявление зависимостей
Добавьте записи ns.dependency в ваш _index.yaml:
version: "1.0"
namespace: app
entries:
- name: dependency.http
kind: ns.dependency
component: acme/http
version: "^1.0.0"
- name: dependency.sql
kind: ns.dependency
component: acme/sql
version: ">=2.0.0"
Ограничения версий
| Ограничение | Пример | Совпадает |
|---|---|---|
| Точная | 1.2.3 |
Только 1.2.3 |
| Каретка | ^1.2.0 |
>=1.2.0, <2.0.0 |
| Тильда | ~1.2.0 |
>=1.2.0, <1.3.0 |
| Диапазон | >=1.0.0 |
1.0.0 и выше |
| Подстановочный знак | * |
Любая версия (выбирается наивысшая) |
| Комбинированное | >=1.0.0 <2.0.0 |
Между 1.0.0 и 2.0.0 |
Рабочий процесс
Создание нового проекта
wippy init
Создаёт wippy.lock с каталогами по умолчанию.
Добавление зависимостей
wippy add acme/http # Последняя версия
wippy add acme/http@1.2.3 # Точная версия
wippy add acme/http@latest # Метка latest
Это обновляет файл блокировки. Затем установите:
wippy install
Разрешение из исходного кода
Если ваш исходный код уже содержит записи ns.dependency:
wippy update
Эта команда сканирует каталог с исходным кодом, разрешает все ограничения зависимостей, обновляет файл блокировки и устанавливает модули.
Обновление зависимостей
wippy update # Переразрешить все зависимости
wippy update acme/http # Обновить только acme/http
wippy update acme/http acme/sql # Обновить конкретные модули
При обновлении конкретных модулей остальные модули остаются закреплёнными на текущих версиях. Если обновление потребует изменения незатронутых модулей, запрашивается подтверждение.
Установка из файла блокировки
wippy install # Установить всё из файла блокировки
wippy install --force # Обойти кэш, загрузить заново
Хранение модулей
Загруженные модули хранятся в каталоге .wippy/vendor/:
project/
wippy.lock
src/
_index.yaml
.wippy/
vendor/
acme/
http-v1.2.0.wapp
sql-v2.0.1.wapp
По умолчанию модули хранятся как файлы .wapp. Для распаковки в каталоги:
# wippy.lock
options:
unpack_modules: true
С включённой распаковкой:
.wippy/
vendor/
acme/
http/
wippy.yaml
src/
_index.yaml
...
Локальная разработка с заменами
Замените модули из хаба локальными каталогами для разработки:
# wippy.lock
directories:
modules: .wippy
src: ./src
modules:
- name: acme/http
version: v1.2.0
hash: ...
replacements:
- from: acme/http
to: ../local-http
Путь замены указывается относительно файла блокировки. При активной замене вместо вендорного модуля используется локальный каталог. Замены сохраняются при операциях wippy update.
Порядок загрузки
При запуске Wippy загружает записи из каталогов в следующем порядке:
- Каталог с исходным кодом (
src) - Каталоги замен
- Каталоги вендорных модулей
Модули с активными заменами пропускают свой вендорный путь.
Проверка целостности
Каждый модуль в файле блокировки имеет хеш содержимого. При установке загруженные модули проверяются на соответствие ожидаемым хешам. Несовпадающие модули отклоняются и повторно загружаются из реестра.
Смотрите также
- CLI - Справочник команд
- Публикация - Публикация модулей в хаб
- Структура проекта - Структура проекта