CLI
npx launchkit init — команда для быстрого разворачивания нового проекта из шаблона. Она копирует
дерево стартера, готовит .env и переименовывает пакет — без установки зависимостей (это
осознанно оставлено следующим шагом, чтобы сама команда укладывалась в секунды).
Использование
npx launchkit init my-app # создать проект в каталоге ./my-app
npx launchkit init . # развернуть в текущий каталог
npx launchkit init my-app --force # разрешить копирование в непустой каталог
npx launchkit help # справка
Флаги --force / -f / --yes / -y — синонимы: снимают защиту «каталог не пуст».
Что делает init
-
Проверяет целевой каталог. Если он не пустой и
--forceне передан — команда завершается с понятной ошибкой (Каталог не пуст: ... Используйте --force, чтобы продолжить.), ничего не копируя. -
Копирует дерево шаблона, исключая build-артефакты, зависимости и историю git:
export const EXCLUDED_ENTRIES: readonly string[] = [ 'node_modules', '.next', '.git', 'dist', 'coverage', '.turbo', ];Локальный
.env(если он есть рядом с шаблоном) никогда не копируется — секреты не должны утечь в новый проект. Вместо него копируется.env.exampleи переименовывается в.env(только если в целевом каталоге ещё нет своего.env). -
Переименовывает пакет.
package.jsonв новом каталоге получаетname, образованный из имени целевой директории (в нижнем регистре, недопустимые для npm-имени символы заменяются на-). Например,init "My Cool App"дастname: "my-cool-app". -
Печатает следующие шаги — что делать дальше, чтобы проект заработал:
✔ Проект создан: /path/to/my-app Дальше: cd my-app pnpm install # заполните .env (DATABASE_URL, AUTH_SECRET, …) pnpm db:generate && pnpm db:migrate pnpm dev
Почему установка зависимостей — отдельный шаг
init — это операция копирования файлов, она укладывается в секунды даже на медленном диске.
Установка зависимостей (pnpm install) занимает заметно больше времени и требует сети — команда
явно печатает её как следующий шаг вместо того, чтобы блокировать пользователя внутри init.
Программный API
Функции CLI (parseArgs, init, toPackageName) экспортируются из cli/index.ts и покрыты
тестами (cli/index.test.ts) — при необходимости их можно переиспользовать в собственных
скриптах разворачивания (например, во внутреннем провижининге).