emit показывает заменяемый созданный исходный код для проверки или
интеграции. build создаёт управляемый продукт поставки. Развёртывайте каталог
build, а не временное хранилище компилятора или отдельные созданные файлы,
вырванные из контекста.
Сборка продуктов
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.pyRaw Web добавляет:
topaz-web.js
topaz-web.d.ts
topaz-web.wasmWeb 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].
Запуск без исходного пакета Топаза
Скопируйте весь каталог продукта в новое место и запускайте из его корня:
./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. Если старый продукт нужно
восстановить, восстановите целиком известную исправную копию, а не редактируйте
хэши и не удаляйте отдельные управляемые файлы.