Commands — 自定义 CLI 命令

Finch 允许你使用 CappController 构建自定义 CLI 命令。

创建命令

import 'package:finch/finch_capp.dart';

class MigrateCommand extends CappController {
  @override
  String get name => 'db:migrate';

  @override
  String get description => '运行数据库迁移';

  @override
  Future<void> handle() async {
    console.info('正在运行迁移...');
    // 迁移逻辑
    console.success('迁移成功');
  }
}

注册命令

FinchConfigs 中注册命令:

FinchConfigs(
  commands: [
    MigrateCommand(),
    SeedCommand(),
    ClearCacheCommand(),
  ],
)

运行命令

dart run bin/finch.dart db:migrate

使用 CappConsole 输出

方法 描述
console.info(msg) 蓝色信息消息
console.success(msg) 绿色成功消息
console.warning(msg) 黄色警告消息
console.error(msg) 红色错误消息
console.line(msg) 普通文本行
console.table(headers, rows) 渲染表格
console.newLine() 空行

读取选项

@override
Future<void> handle() async {
  var env = getOption('env', def: 'development');
  var dryRun = getBoolOption('dry-run', def: false);

  if (dryRun) {
    console.warning('试运行模式:不会应用任何更改');
  }

  console.info('环境:\$env');
}

内置命令

命令 描述
finch serve 启动开发服务器
finch build 构建生产版本
finch migrate 运行数据库迁移
finch make:controller 创建新控制器
finch make:model 创建新模型