BBackOne Docsserver · utils · cli
Bun-nativeGitHub ↗
@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> 决定是否覆盖,路径相对项目根。
  • 模板文件内容中 占位会被替换为项目名。
  • 依赖安装失败时打印警告,不阻断项目生成。