NocoBase CLInb app autostart list命令详解:查看 env 应用自启动状态
【免费下载链接】nocobaseNocoBase is an open-source AI + no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase
nb app autostart list是 NocoBase CLI 中用于查看当前配置下所有 env(环境)应用自启动状态的命令。它配合nb app autostart enable/disable使用,帮助开发者快速确认哪些 env 已被标记为开机自启动、哪些没有。本文以该命令为核心,结合 NocoBase 开源仓库中 list.ts 等源码实现,讲清命令用法、输出列含义、底层判定逻辑与完整自启动工作流。
命令作用:查看 CLI 配置中的自启动标记
nb app autostart list不启动任何应用,也不修改任何配置。它的唯一职责是读取 CLI 本地保存的 env 配置,将每个 env 的自启动标记以表格形式输出,相当于自启动功能的"只读检查器"。
nb app autostart list从源码实现看(list.ts),该命令执行流程为:
- 通过
listEnvs()读取全部 env 配置; - 通过
getCurrentEnvName()解析当前 env 名称; - 将 env 名称排序后逐行构建表格数据;
- 调用
renderTable()输出终端表格。
如果当前还没有任何已保存的 env,命令会直接输出一行提示:
No environments are configured.对应的源码分支位于 list.ts:当Object.keys(envs)为空时即输出该提示并提前返回。
输出表格列含义
命令输出使用表格展示以下五列:
| 列名 | 含义 |
|---|---|
Current | 是否为当前 env。是则标记为*,否则为空 |
Env | env 名称 |
Kind | env 类型(local/docker/http/ssh) |
Source | 安装或来源类型(如npm、git、docker、local) |
Autostart | 是否已开启自启动(yes/no) |
这五列与源码中的表头定义一一对应:
this.log(renderTable(['Current', 'Env', 'Kind', 'Source', 'Autostart'], rows));列的取值逻辑
Current列:由getCurrentEnvName()解析出的当前 env 与每个 env 名称比较,相等则填*(list.ts)。当前 env 的解析同时参考持久化的lastEnv与会话状态,见 auth-store.ts。Kind列:直接取 env 配置中的kind字段,缺省时显示-。有效取值为local、http、docker、ssh(auth-store.ts)。注意:若未显式声明kind,加载配置时会被归一化为推导值,例如source为npm/git/local时推导为local,为docker时推导为docker(auth-store.ts)。Source列:取 env 配置中的source字段,表示应用安装或来源类型(如npm、git、docker、local),缺省时显示-(list.ts)。Autostart列:通过isAutostartEnabled(env)判断,只有autostart.enabled === true才显示yes(shared.ts)。也就是说,如果配置中不存在autostart字段或该字段的enabled不是严格布尔值true,一律视为no。
参考输出示例
结合仓库中的测试用例 app-autostart-commands.test.ts,当配置中存在app1(local/npm,未开自启动)、app2(docker/docker,已开自启动)、remote1(http,无 source)三个 env,且当前 env 为app1时,输出形如:
Current | Env | Kind | Source | Autostart * | app1 | local | npm | no | app2 | docker | docker | yes | remote1 | http | - | no从该测试用例可以看到:Current列只在当前 env 行出现*;Source列缺省显示-;自启动标记严格按autostart.enabled判定。
数据从哪来:配置存储位置与结构
nb app autostart list读取的是 CLI 工作区级的config.json文件。根据 cli-home.ts,默认目录名为.nocobase,位于用户主目录下(可通过环境变量NB_CLI_ROOT覆盖根目录),完整路径为:
~/.nocobase/config.json配置文件的顶层结构为AuthConfig(auth-store.ts),核心字段是envs(env 名到配置项的映射)和lastEnv(最近使用的 env 名)。每个 env 配置项EnvConfigEntry中与自启动相关的字段为:
{ "envs": { "app1": { "kind": "local", "source": "npm", "autostart": { "enabled": true } } }, "lastEnv": "app1" }其中autostart字段的定义见 auth-store.ts,结构为:
autostart?: { enabled?: boolean; };由于list只做读取展示,不会对配置文件做任何写入;而enable/disable命令则通过updateAutostartSetting()写入或删除该字段(开启时写入{ enabled: true },关闭时整体删除autostart字段),见 shared.ts。
与相关命令的配合使用
list处于整个自启动命令族的"查看"环节,与其配套的命令包括:
| 命令 | 作用 |
|---|---|
nb app autostart enable | 为指定 env 开启自启动标记 |
nb app autostart disable | 关闭指定 env 的自启动标记 |
nb app autostart run | 启动所有已开启自启动的 env |
nb env list | 查看所有已配置的 env 基本信息 |
开启自启动(enable)
nb app autostart enable # 为当前 env 开启 nb app autostart enable --env app1 # 为指定 env 开启 nb app autostart enable --env app1 --yes # 跨 env 时跳过交互确认该命令只针对当前机器上由 CLI 托管运行态的local或dockerenv,且只写入标记、不立即启动应用。如果目标 env 是http/ssh等类型,会直接报错拒绝保存(shared.ts,测试用例见 app-autostart-commands.test.ts)。
关闭自启动(disable)
nb app autostart disable nb app autostart disable --env app1disable会删除 env 配置中的autostart字段,之后执行list时该行Autostart列将显示为no。
实际启动(run)
nb app autostart run nb app autostart run --verboserun会筛选出所有isAutostartEnabled()为真的 env,逐个以app:start --env <name> --yes拉起应用,并输出Env | Status | Detail汇总表(run.ts)。它通常被接入系统级开机流程(如 systemd、crontab @reboot 或 Docker 容器的 entrypoint),list正是用来验证这套流程前置标记是否正确落盘的检查手段。
使用注意事项
- 只看标记,不看运行态:
list只反映 CLI 配置中已保存的自启动标记,不会检查应用当前是否已经启动,也不会检查系统级启动流程是否已把nb app autostart run接进去。它回答的是"哪些 env 被标记为自启动",而非"哪些应用正在运行"。 yes的判定是严格的:Autostart列只在autostart.enabled === true时显示yes,autostart: {}、autostart: { enabled: false }或字段缺失都会显示no。- 跨 env 确认机制:
enable/disable在显式传入--env且目标 env 与当前 env 不一致时,交互终端会先确认;在非交互终端或 AI Agent 场景下需要显式追加--yes,或先执行nb env use <name>切换到目标 env 再操作。 - 仅适用于 CLI 托管 env:自启动标记只对当前机器上由 CLI 托管的
local或dockerenv 有效,http/ssh类型的远程 env 无法加入自启动名单。
小结
nb app autostart list是 NocoBase CLI 自启动功能族中最直接的"状态查看器"。通过一张五列表格,它能同时呈现当前 env 标识、env 类型、安装来源与自启动标记,配合 enable、disable、run 构成"标记 → 查看 → 拉起"的完整闭环。其底层实现(list.ts + shared.ts + auth-store.ts)与测试用例(app-autostart-commands.test.ts)均为阅读源码、扩展自启动能力提供了清晰的参考起点。
【免费下载链接】nocobaseNocoBase is an open-source AI + no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考