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— отмена с exit130до того, как что-то покинет машину.
Политика URL
Заголовок раздела «Политика URL»Переключение продакшн/dev-URL на новую версию всегда явно — серверный дефолт VK молча не решает:
- Задано флагом или полем конфига — используется как есть, без вопросов.
- Не задано на TTY — CLI спросит перед планом:
Enterпринимает показанный дефолт (да),nзакрепляет «не переключать». Отказ в update-промпте не отменяет деплой; отменяет толькоnнаDeploy?. - Не задано в неинтерактивном прогоне (не-TTY,
CI,--json/--quiet) — ошибкаE_UPDATE_FLAG_REQUIRED(exit1) с подсказкой, какой флаг передать. Это касается и--yes: автоматизация обязана закрепить политику. - Не задано с
--yesили--dry-runна TTY — флаги остаются незаданными, применяется серверный дефолт VK (в плане так и написано:server default).
Спрошенные ответы никогда не затирают значения из флага, env или конфига.
login и logout
Заголовок раздела «login и logout»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-токен живёт дальше.
Exit-коды
Заголовок раздела «Exit-коды»| Код | Смысл |
|---|---|
0 |
успех |
1 |
ошибка конфига или пользователя |
2 |
сеть, таймаут |
3 |
ошибка VK API |
130 |
прервано: Ctrl+C или отказ на Deploy? |
- Конфигурация — все поля и легаси-формат.
- Env и CI — переменные, неинтерактивный деплой, прокси.