Сборка и поставка

Пакеты и распространение

Используйте корень пакета, манифест, файл блокировки, локальные байты зависимостей и управляемый продукт в надлежащей последовательности.

Пакет предоставляет обычным модулям Топаза общий корень, точку входа, граф зависимостей и цель сборки. Он не вводит новый синтаксис и не ослабляет правила видимости и циклов модулей.

1. Создание корня пакета

BASH
topaz init --root my-app

В корне создаются файлы topaz.toml и src/main.tpz. Манифест задаёт имя пакета, используемый язык, точку входа, стандартную цель сборки и зависимости. Команды с параметром --root my-app без указания входного файла используют точку входа из манифеста.

Каркасы Web Application и HTTP выбираются при создании пакета:

BASH
topaz init --target web-app --root my-web-app
topaz init --target http-service --root my-service

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

BASH
topaz lock --root my-app
topaz fmt --check --root my-app
topaz check --root my-app --locked
topaz test --root my-app --locked
topaz run --root my-app --locked

Файл topaz.lock фиксирует корневой манифест и разрешённое содержимое локальных зависимостей. Флаг --locked прерывает выполнение, если манифест, файл блокировки или локальные байты различаются. Измените манифест намеренно, повторно выполните команду lock, проверьте разницу и верните --locked.

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

Зависимость по пути добавляется с указанием относительного пути и идентичности содержимого:

BASH
topaz add utility --path ../utility --root my-app
topaz lock --root my-app

До фиксации файла блокировки зависимость реестра должна находиться в явно указанном локальном источнике:

BASH
topaz add utility@1.2.0 --root my-app
topaz vendor --root my-app --from ./registry
topaz check --root my-app --locked

Команда vendor проверяет выбранный пакет, копирует его в vendor/utility/1.2.0 и записывает файл блокировки. Если выполнить lock до появления хэша или скопированного содержимого, команда завершается ошибкой без обращения к сетевому реестру. Команда fetch использует тот же явно указанный локальный источник через параметр --from. Ни одна из команд не разрешает зависимости через внешнюю сеть.

4. Сборка из локальных источников

BASH
topaz build --root my-app --locked --release --out-dir product

Разрешение пакета теперь использует только корень, зависимости по пути, зафиксированные байты скопированных зависимостей и встроенные данные инструментария. Сборка под целевые платформы и браузер также запускает Cargo во внутреннем заблокированном автономном режиме. Дополнительный параметр Топаза для этого не требуется.

Готовый управляемый продукт является единицей распространения. Во время выполнения ему не требуются файлы topaz.toml и topaz.lock, директория vendor, исходный код пакета и CLI Топаза. Копируйте весь каталог продукта и данные приложения, необходимые объявленным файловым полномочиям.

Восстановление без ослабления файла блокировки

  • Если --locked сообщает об изменении манифеста, решите, внесено ли оно намеренно, пересоздайте файл блокировки и проверьте разницу.
  • Если отсутствует пакет реестра, получите явно указанный локальный источник и выполните vendor или fetch. Не удаляйте --locked.
  • Если скопированное содержимое изменилось, восстановите записанные байты либо намеренно повторите команду vendor и проверьте новую зависимость.
  • Если изменился результат сборки, используйте новый пустой каталог вместо удаления неизвестных файлов.

Связанная документация