NocoBase CLI `nb app autostart list` 命令详解:查看 env 应用自启动状态
2026/9/13 19:00:37 网站建设 项目流程

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),该命令执行流程为:

  1. 通过listEnvs()读取全部 env 配置;
  2. 通过getCurrentEnvName()解析当前 env 名称;
  3. 将 env 名称排序后逐行构建表格数据;
  4. 调用renderTable()输出终端表格。

如果当前还没有任何已保存的 env,命令会直接输出一行提示:

No environments are configured.

对应的源码分支位于 list.ts:当Object.keys(envs)为空时即输出该提示并提前返回。

输出表格列含义

命令输出使用表格展示以下五列:

列名含义
Current是否为当前 env。是则标记为*,否则为空
Envenv 名称
Kindenv 类型(local/docker/http/ssh
Source安装或来源类型(如npmgitdockerlocal
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字段,缺省时显示-。有效取值为localhttpdockerssh(auth-store.ts)。注意:若未显式声明kind,加载配置时会被归一化为推导值,例如sourcenpm/git/local时推导为local,为docker时推导为docker(auth-store.ts)。
  • Source:取 env 配置中的source字段,表示应用安装或来源类型(如npmgitdockerlocal),缺省时显示-(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 托管运行态的localdockerenv,且只写入标记、不立即启动应用。如果目标 env 是http/ssh等类型,会直接报错拒绝保存(shared.ts,测试用例见 app-autostart-commands.test.ts)。

关闭自启动(disable)

nb app autostart disable nb app autostart disable --env app1

disable会删除 env 配置中的autostart字段,之后执行list时该行Autostart列将显示为no

实际启动(run)

nb app autostart run nb app autostart run --verbose

run会筛选出所有isAutostartEnabled()为真的 env,逐个以app:start --env <name> --yes拉起应用,并输出Env | Status | Detail汇总表(run.ts)。它通常被接入系统级开机流程(如 systemd、crontab @reboot 或 Docker 容器的 entrypoint),list正是用来验证这套流程前置标记是否正确落盘的检查手段。

使用注意事项

  1. 只看标记,不看运行态list只反映 CLI 配置中已保存的自启动标记,不会检查应用当前是否已经启动,也不会检查系统级启动流程是否已把nb app autostart run接进去。它回答的是"哪些 env 被标记为自启动",而非"哪些应用正在运行"。
  2. yes的判定是严格的Autostart列只在autostart.enabled === true时显示yesautostart: {}autostart: { enabled: false }或字段缺失都会显示no
  3. 跨 env 确认机制enable/disable在显式传入--env且目标 env 与当前 env 不一致时,交互终端会先确认;在非交互终端或 AI Agent 场景下需要显式追加--yes,或先执行nb env use <name>切换到目标 env 再操作。
  4. 仅适用于 CLI 托管 env:自启动标记只对当前机器上由 CLI 托管的localdockerenv 有效,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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询