Перейти к содержимому

CLI

Бинарник — vkma-deploy; без установки запускай npx @vkma.dev/deploy (или pnpm dlx / yarn dlx / bunx).

Команда Что делает
vkma-deploy [deploy] [flags] Деплой (команда по умолчанию): конфиг → архив → загрузка → очередь
vkma-deploy init Создать vkma-deploy.config.ts; на TTY — мастер, без TTY — значения флагами
vkma-deploy login Авторизация через браузер, токен сохраняется локально
vkma-deploy logout Удалить сохранённые креды
vkma-deploy config Напечатать резолвнутый конфиг: источник каждого значения, предупреждения; токен скрыт
vkma-deploy completions <shell> Скрипт автодополнения: bash, zsh, fish

init не трогает существующий конфиг — укажет на файл для правки. Значения подтягиваются из легаси vk-hosting-config.json в текущей директории (токен в новый файл не копируется никогда), спрашивается только недостающее. Флаги init: --app-id <id> (без TTY обязателен), --static-path <dir> (по умолчанию ./dist), --endpoints <mobile,mvk,web> (по умолчанию все три, каждая указывает на index.html).

Флаг Что делает
--env <dev|production|both> Целевое окружение (по умолчанию both)
--config <path> Явный файл конфига, минуя поиск (кроме init)
--timeout <sec> Дедлайн очереди хостинга (по умолчанию 600)
--test-group <name> Деплой в именованную тестовую группу (только dev)
--proxy <url> Проксировать весь трафик через HTTP(S)-прокси
--update-prod / --no-update-prod Переключать ли продакшн-URL; см. политику URL
--update-dev / --no-update-dev Переключать ли dev-URL; те же правила
--dry-run Проверить конфиг и собрать архив, ничего не отправляя
--interactive Спрашивать недостающие значения (только TTY)
--yes, -y Пропустить подтверждение деплоя
--json Машиночитаемые события NDJSON на stdout
--verbose, -v Отладочный вывод, включая HTTP-запросы (секреты замаскированы)
--quiet, -q Только ошибки
--no-color Без цветов (также уважается NO_COLOR)
--help, -h / --version, -V Справка / версия

По умолчанию CLI никогда не спрашивает — дефолт безопасен для CI. --interactive (только TTY) спрашивает лишь то, что не задано иначе; приоритет флаг > env > конфиг > промпт, и ответы не записываются в конфиг. --interactive не спасёт конфиг без appId/staticPath — резолв упадёт раньше любых промптов.

Безусловно спрашиваются только на TTY (пропускается при переменной CI, не-TTY stdin, --json/--quiet):

  • Код подтверждения VK (событие очереди 205): VK присылает код на некоторые деплои. Пустой ввод или Ctrl+C — отмена с exit 130, а не фейковый успех. В CI прогон падает сразу — код подаётся программно через library API (confirmCode).
  • План деплоя + Deploy? (Y/n): окружения, переключение URL, тестовая группа, архив, эндпоинты. Enter — ехать, n — отмена с exit 130 до того, как что-то покинет машину.

Переключение продакшн/dev-URL на новую версию всегда явно — серверный дефолт VK молча не решает:

  • Задано флагом или полем конфига — используется как есть, без вопросов.
  • Не задано на TTY — CLI спросит перед планом: Enter принимает показанный дефолт (да), n закрепляет «не переключать». Отказ в update-промпте не отменяет деплой; отменяет только n на Deploy?.
  • Не задано в неинтерактивном прогоне (не-TTY, CI, --json/--quiet) — ошибка E_UPDATE_FLAG_REQUIRED (exit 1) с подсказкой, какой флаг передать. Это касается и --yes: автоматизация обязана закрепить политику.
  • Не задано с --yes или --dry-run на TTY — флаги остаются незаданными, применяется серверный дефолт VK (в плане так и написано: server default).

Спрошенные ответы никогда не затирают значения из флага, env или конфига.

login запускает OAuth device flow: открывает браузер (только на TTY), ждёт подтверждения и пишет токен в $XDG_CONFIG_HOME/vkma/deploy/credentials.json с правами 0600. Токен не печатается. appId берётся из конфига, VKMA_APP_ID или промптом через --interactive. Первый запуск также прочитает токен, сохранённый официальным @vkontakte/vk-miniapps-deploy — миграция без перелогина.

logout удаляет сохранённый токен; если остался токен официального тула, CLI предупредит, что fallback-токен живёт дальше.

Код Смысл
0 успех
1 ошибка конфига или пользователя
2 сеть, таймаут
3 ошибка VK API
130 прервано: Ctrl+C или отказ на Deploy?
  • Конфигурация — все поля и легаси-формат.
  • Env и CI — переменные, неинтерактивный деплой, прокси.