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

CLI

Форма вызова: create <путь> [флаги]. В TTY CLI спрашивает недостающее, без TTY работает полностью на флагах.

Пакет называется @vkma.dev/create-app, но каждый менеджер запускает его по-своему:

Менеджер Команда
npm npm create @vkma.dev/app my-app -- --preset router
pnpm pnpm create @vkma.dev/app my-app --preset router
yarn yarn create @vkma.dev/app my-app --preset router
bun bunx @vkma.dev/create-app my-app --preset router

npm требует -- перед флагами — иначе перехватывает их как свои опции (сам разделитель до CLI не доходит). pnpm, yarn и bunx передают флаги как есть; голый --, если он всё же попадёт в argv, CLI молча отбрасывает вместе со всем, что после него, — не добавляй его к этим формам.

my-app — позиционный аргумент, каталог проекта относительно текущего. В интерактивном режиме без пути CLI спросит его (по умолчанию . — текущий каталог); без TTY скаффолд идёт в текущий каталог.

Флаг Значение
--preset <id> Пресет: base, vkui или router (по умолчанию router)
--pm <id> Менеджер пакетов: npm | pnpm | yarn | bun
--no-install Не устанавливать зависимости после скаффолда
--no-git Не инициализировать git-репозиторий
-h, --help Справка

Поддерживается и форма --flag=value: --preset=base, --pm=pnpm. Неизвестный флаг, второй позиционный аргумент или --preset без значения — ошибка с распечаткой справки.

--pm по умолчанию определяется по npm_config_user_agent: команда запуска сама сообщает, кто её вызвал (pnpm create … → pnpm). Если определить не удалось, в TTY CLI спросит (рекомендация — pnpm), без TTY упадёт с просьбой передать --pm явно.

При подключённом TTY CLI спрашивает по очереди:

  1. каталог проекта (плейсхолдер .);
  2. пресет — список с описаниями, курсор на router;
  3. менеджер пакетов, если он не определился по окружению;
  4. устанавливать ли зависимости (запускается <pm> install);
  5. инициализировать ли git (git init --quiet).

Каталог не пуст — CLI попросит подтверждение. Неизвестный пресет или менеджер — ошибка со списком допустимых.

Без TTY вопросов нет, часть флагов становится обязательной:

  • --preset обязателен;
  • --pm обязателен, если менеджер не определился по окружению;
  • непустой каталог — отказ без записи (в TTY на это спросит подтверждение).
Окно терминала
npm create @vkma.dev/app my-app -- \
--preset base --pm npm --no-install --no-git

После скаффолда CLI печатает следующие шаги: cd в каталог, при --no-install ещё <pm> install, затем запуск dev-сервера в форме твоего менеджера (npm run dev, pnpm dev, bun run dev) и подсказку про деплой: проставь appId в vkma-deploy.config.ts, залогинься npx vkma-deploy login и вызови deploy — см. deploy.

Что именно генерируется — в структуре приложения.