@geektech/backone-cli
命令
init 命令用法、交互式模板选择与编程式 API initProject。
init
创建新的 BackOne 项目骨架:
ts
backone init <project-name> [options]| 选项 | 说明 |
|---|---|
--template <name> | 指定模板:minimal | rest-api | websocket(缺省时交互式选择,非 TTY 默认 minimal) |
--no-install | 跳过 bun install |
交互式模板选择
不带 --template 参数且处于终端(TTY)时,会提示选择模板:
text
$ backone init my-app
Select a template:
1. Minimal — single route, zero extras
2. REST API — CRUD example with route groups and middleware
3. WebSocket — real-time chat with browser client
Enter choice (1-3, default 1): 版本与帮助
text
backone --version # 0.2.0
backone --help
Usage:
backone init <project-name> [options] Create a new BackOne project
backone --version Show version
backone --help Show this help
Options:
--template <name> Template: minimal | rest-api | websocket
--no-install Skip bun install编程式 API
initProject 支持脚本化创建项目,便于自动化与测试:
ts
import { initProject, TEMPLATES } from '@geektech/backone-cli';
const result = await initProject({
name: 'my-app',
template: 'rest-api',
skipInstall: true,
});
result.projectPath; // 项目绝对路径
result.template; // "rest-api"
result.installed; // false(跳过安装)行为约定
- 允许在已有目录中初始化,缺少的模板文件会直接生成,其他文件保留。
- 同名模板文件逐个询问
Overwrite? (y/N);输入 y 或 yes 才覆盖,回车或拒绝则跳过该文件并继续。 - 非 TTY 环境自动保留已有文件;编程式 API 可通过
confirmOverwrite(filePath)返回 boolean 或 Promise<boolean> 决定是否覆盖,路径相对项目根。 - 模板文件内容中
占位会被替换为项目名。 - 依赖安装失败时打印警告,不阻断项目生成。