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

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

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

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

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 и проверьте новую зависимость.
  • Если изменился вывод сборки, используйте новый пустой каталог вместо удаления неизвестных файлов.

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