Управление зависимостями
Управление зависимостями
Заголовок раздела «Управление зависимостями»Wippy использует систему зависимостей на основе файла блокировки. Модули публикуются в хаб, объявляются как зависимости в исходном коде и разрешаются в файл wippy.lock, который отслеживает точные версии.
Файлы проекта
Заголовок раздела «Файлы проекта»wippy.lock
Заголовок раздела «wippy.lock»Файл блокировки отслеживает структуру каталогов проекта и закреплённые зависимости:
directories: modules: .wippy src: ./srcmodules: - 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
Заголовок раздела «wippy.yaml»Метаданные модуля для публикации. Требуется только при публикации собственного модуля:
organization: acmemodule: httpversion: 1.2.0description: HTTP utilities for Wippylicense: MITrepository: https://github.com/acme/wippy-httpkeywords: - http - web| Поле | Обязательное | Описание |
|---|---|---|
organization | Да | Строчные буквы, буквенно-цифровые с дефисами |
module | Да | Строчные буквы, буквенно-цифровые с дефисами |
version | Нет | Семантическая версия (устанавливается при публикации) |
description | Нет | Описание модуля |
license | Нет | Идентификатор лицензии SPDX |
repository | Нет | URL репозитория с исходным кодом |
homepage | Нет | Домашняя страница проекта |
keywords | Нет | Ключевые слова для поиска |
authors | Нет | Список авторов |
Объявление зависимостей
Заголовок раздела «Объявление зависимостей»Добавьте записи ns.dependency в ваш _index.yaml:
version: "1.0"namespace: appentries: - 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/httpwippy update acme/http acme/sql # Обновить конкретные модулиПри обновлении конкретных модулей остальные модули остаются закреплёнными на текущих версиях. Если обновление потребует изменения незатронутых модулей, запрашивается подтверждение.
Установка из файла блокировки
Заголовок раздела «Установка из файла блокировки»wippy install # Установить всё из файла блокировкиwippy install --refresh # Повторно загрузить каждый модуль (--force и --repair — алиасы)Хранение модулей
Заголовок раздела «Хранение модулей»Загруженные модули хранятся в каталоге .wippy/vendor/:
project/ wippy.lock src/ _index.yaml .wippy/ vendor/ acme/ http-v1.2.0.wapp sql-v2.0.1.wappПо умолчанию модули хранятся как файлы .wapp. Для распаковки в каталоги:
# wippy.lockoptions: unpack_modules: trueС включённой распаковкой:
.wippy/ vendor/ acme/ http/ wippy.yaml src/ _index.yaml ...Локальная разработка с заменами
Заголовок раздела «Локальная разработка с заменами»Замените модули из хаба локальными каталогами для разработки:
# wippy.lockdirectories: modules: .wippy src: ./srcmodules: - name: acme/http version: v1.2.0 hash: ...replacements: - from: acme/http to: ../local-httpПуть замены указывается относительно файла блокировки. При активной замене вместо вендорного модуля используется локальный каталог. Замены сохраняются при операциях wippy update.
Порядок загрузки
Заголовок раздела «Порядок загрузки»При запуске Wippy загружает записи из каталогов в следующем порядке:
- Каталог с исходным кодом (
src) - Каталоги замен
- Каталоги вендорных модулей
Модули с активными заменами пропускают свой вендорный путь.
Проверка целостности
Заголовок раздела «Проверка целостности»Каждый модуль в файле блокировки имеет хеш содержимого. При установке загруженные модули проверяются на соответствие ожидаемым хешам. Несовпадающие модули отклоняются и повторно загружаются из реестра.
Смотрите также
Заголовок раздела «Смотрите также»- CLI - Справочник команд
- Публикация - Публикация модулей в хаб
- Структура проекта - Структура проекта