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

Артефакты и развёртывание

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

emit показывает заменяемый созданный исходный код для проверки или интеграции. build создаёт управляемый продукт поставки. Развёртывайте каталог build, а не временное хранилище компилятора или отдельные созданные файлы, вырванные из контекста.

Сборка продуктов

BASH
topaz build main.tpz --release --out-dir native-product
topaz build --target python --root my-app --locked --out-dir python-product
topaz build main.tpz --target web --out-dir web-product
topaz build main.tpz --target web-worker --out-dir worker-product
topaz build --root my-app --locked --release --out-dir package-product

Последняя команда использует [build].target из topaz.toml; web-app и http-service доступны только в пакетном режиме. topaz.lock относится к разработке и проверке. Готовый управляемый продукт записывает собственную идентичность в topaz-artifact.json.

Общие файлы каждого продукта

Каждая успешная сборка добавляет:

Вывод
LICENSE
NOTICE
GENERATED-OUTPUT-NOTICE.txt
topaz-artifact.json

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

Деревья отдельных целей

Платформенный продукт добавляет один исполняемый файл:

Вывод
target/debug/program[.exe]
target/release/program[.exe]

Существует только выбранный профиль. В Windows имя заканчивается на .exe.

Python добавляет:

Вывод
program.py
topaz_py_rt.py

Raw Web добавляет:

Вывод
topaz-web.js
topaz-web.d.ts
topaz-web.wasm

Web Worker добавляет к файлам Raw Web:

Вывод
topaz-web-worker.js
topaz-web-worker-client.js

Управляемое Web Application добавляет к файлам Raw Web:

Вывод
index.html
topaz-app.js
topaz-web-capabilities.json
styles/app.css

Объявленные стили и ресурсы сохраняют нормализованные относительные пути, поэтому последняя строка зависит от пакета.

Ограниченный HTTP-сервис добавляет:

Вывод
target/release/program[.exe]
topaz-service-config.json
THIRD-PARTY-NOTICES.txt

В примере показана релизная сборка. Отладочная сборка использует target/debug, а в Windows появляется часть [.exe].

Запуск без исходного пакета Топаза

Скопируйте весь каталог продукта в новое место и запускайте из его корня:

BASH
./target/release/program
python3 program.py

Используйте команду, соответствующую выбранному платформенному, HTTP- или Python-продукту. Для Python нужна версия 3.11 или новее. Платформенный исполняемый файл и файл HTTP-сервиса предназначены для системы сборки.

Раздавайте каталог управляемого Web Application по HTTP и открывайте index.html. Raw Web и Worker требуют среду модулей ES, которая импортирует созданный API JavaScript. Ни один браузерный продукт не должен полагаться на загрузку модулей через file://.

Платформенные и Python-приложения из пакета разрешают объявленные корни файловых полномочий относительно рабочего каталога процесса. Если этого требует манифест, скопируйте данные приложения и создайте доступные для записи каталоги рядом с управляемым продуктом: пакетные данные не добавляются автоматически. Стили и ресурсы веб-приложения отличаются: объявленные входы [web] копируются в управляемый браузерный продукт.

Безопасность каталога вывода и восстановление

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

Не удаляйте неоднозначный каталог, чтобы принудить сборку. Сохраните его для анализа и выберите новый пустой --out-dir. Если старый продукт нужно восстановить, восстановите целиком известную исправную копию, а не редактируйте хэши и не удаляйте отдельные управляемые файлы.

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