Topazdocs
Инструментарий

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

Манифесты, lock-файлы, vendoring, автономные сборки и npm-установщик Topaz v5.7.

Пакетный режим объединяет обычные модули Topaz с корнем проекта, зависимостями, lock-файлом и локальными копиями внешних пакетов. Он не добавляет новый синтаксис и не ослабляет правила видимости, циклов и инициализации модулей.

Контракт и компоненты

topaz.toml задаёт имя пакета, версию языка, точку входа и зависимости. topaz.lock фиксирует выбранные версии и данные для проверки содержимого. Локальные зависимости задаются путём, а внешние копируются в vendor/<name>/<version>. Если у команды проверки, запуска или сборки не указан файл, используется точка входа пакета.

Рабочий процесс

init создаёт пакет, add добавляет зависимость, lock обновляет lock-файл, а fetch и vendor сохраняют внешние зависимости локально. Храните topaz.toml и topaz.lock в репозитории и используйте --locked для воспроизводимых сборок.

При запуске topaz lsp редактор должен передать каталог пакета в initialize.rootUri. Если lock-файл действителен, диагностика разрешает локальные модули и зависимости из vendor по тому же графу пакета, что и topaz check; содержимое открытых документов имеет приоритет над сохранёнными файлами.

Topaz 5.7.0 добавляет topaz init --target web-app, делает [build].target фактической целью package build по умолчанию и допускает строгую таблицу [web] только с title, нормализованными styles/*.css и assets/**. В таблицах стилей запрещены CSS @import и удалённые либо экранированные ссылки url(); каждый файл стилей нужно объявлять явно, а его ресурсы поставлять как управляемые assets. topaz dev работает лишь для этой цели и привязывается только к loopback.

Для файлов приложения объявите разрешённые корни в [capabilities.fs] и запускайте готовый продукт из каталога с его data и выходными каталогами. Нативный исполняемый файл и Python-сборка пакетного режима отсчитывают эти корни от рабочего каталога запуска, поэтому исходный пакет во время выполнения не требуется. Python-сборке нужен Python 3.11 или новее; она работает как обычное CLI-приложение с прямыми stdout/stderr, аргументами, stdin и кодом завершения явной функции main.

Текущая поддержка

Topaz v5.7 поддерживает создание пакетов, добавление зависимостей, блокировку версий, vendoring, компиляцию пакетов и автономные сборки. Публичный пакет topaz-lang@5.7.0 устанавливает подходящий исполняемый файл Topaz для текущей платформы.

Границы и ограничения

Зависимость пакета не даёт дополнительных прав среды и не импортирует синтаксис другого языка. Исходные зависимости Topaz используют topaz.toml, topaz.lock и локально сохранённые файлы; npm-пакет служит только установщиком CLI. Для автономной сборки все зафиксированные зависимости должны находиться локально.

topaz emit --target python остаётся поверхностью для просмотра исходного кода и trace-интеграции. Для приложения с физической файловой системой используйте topaz build --target python в пакетном режиме.

Справочник команд

topaz init --root my-app
topaz add utility@1.2.0 --root my-app
topaz lock --root my-app
topaz vendor --root my-app --from ./registry
topaz check --root my-app --locked
topaz build --root my-app --locked --out-dir ./dist/native
topaz build --target python --root my-app --locked --out-dir ./dist/python

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