NocoBase CLI 详解nb env update 命令如何安全更新环境配置与触发运行时同步【免费下载链接】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/nocobasenb env update是 NocoBase CLI 中用于维护已保存环境env的核心命令它可以修改环境的 API 地址、认证方式、源码来源、应用路径、端口与数据库参数也可以不带任何参数按当前状态重新同步运行时。本文以 命令参考文档 为骨架结合 CLI 源码实现 EnvUpdate 命令完整梳理该命令的全部参数、校验规则、更新后的自动提示逻辑以及典型用法帮助你把环境配置变更做到改得准、知道该做什么后续动作。命令定位与用法nb env update用来更新一个已保存 env 的配置。你可以用它调整 API 地址、认证方式、源码来源、本地应用路径、公开访问路径、端口、数据库参数等。更新完成后CLI 会根据变更自动处理后续事宜而如果你不带任何配置参数执行CLI 也会按当前 env 状态做一次运行时重新同步。nb env update [name] [flags]参数类型说明[name]string要更新的已配置环境名称省略时使用当前 env。--verboseboolean显示详细进度。从源码结构看name是一个可选的位置参数见 update.ts 的 args 定义省略时命令会调用getCurrentEnvName解析当前 env 后再走运行时刷新流程--verbose只是切换输出详细度不参与配置变更。完整参数参考以下参数表完整继承自 官方命令参考并结合源码中标签定义Flags配置补充了取值约束。API 与认证参数参数类型说明--api-base-url,-ustringNocoBase API 地址必须包含/api前缀例如http://localhost:13000/api。--auth-typestring认证方式仅允许basic、token、oauth三选一。--access-token,--token,-tstringtoken认证使用的 API key 或 access token。保存后会把认证方式切到token。--usernamestringbasic认证保存的用户名。只能在当前 env 使用basic认证或同时传入--auth-type basic时使用。源码中的 flag 定义Flags 配置确认了--auth-type通过options: [basic, token, oauth]做白名单约束--access-token带短字符-t与别名--token--api-base-url带短字符-u。源码与下载参数参数类型说明--sourcestring已保存的应用来源docker、git、local、npm。--download-version,--versionstring已保存的版本参数Docker tag、npm 包版本或 Git ref。--docker-registrystringDocker 镜像仓库名不含 tag。--docker-platformstringDocker 镜像平台auto、linux/amd64、linux/arm64。--git-urlstringGit 仓库地址。--npm-registrystringnpm/Git 下载和依赖安装使用的 registry。--dev-dependencies/--no-dev-dependenciesbooleannpm/Git 安装时是否安装 devDependencies。--build/--no-buildbooleannpm/Git 下载后是否自动构建。--build-dts/--no-build-dtsboolean构建时是否生成 TypeScript 声明文件。这些字段在源码中被归入SOURCE_SETTING_FIELDS集合字段分组定义其语义是更新它们只会修改保存值现有本地源码、依赖和镜像不会被自动替换——这一点会在更新完成后以提示信息的形式明确告知见下文。应用参数参数类型说明--app-pathstring应用目录。现在默认推荐优先用这个参数管理本地目录。--app-public-pathstring应用公开访问路径APP_PUBLIC_PATH比如/或/nocobase/。--app-portstring应用 HTTP 端口。--cdn-base-urlstring客户端静态资源 CDN 基地址CDN_BASE_URL。--app-keystring应用密钥APP_KEY。--timezonestring应用时区TZ。另外源码中还定义了三个文档未列出的隐藏参数hidden: true分别是--app-root-path、--storage-path和--env-file见 隐藏 flag 定义主要用于内部保存应用根路径、存储路径与 Docker--env-file路径常规使用中不必关心。数据库参数参数类型说明--builtin-db/--no-builtin-dbboolean是否使用 CLI 托管的内置数据库。--db-dialectstring数据库类型postgres、mysql、mariadb、kingbase。--builtin-db-imagestring内置数据库容器镜像。--db-hoststring数据库主机地址。--db-portstring数据库端口。--db-databasestring数据库名称。--db-userstring数据库用户名。--db-passwordstring数据库密码。--db-schemastring数据库 schema。通常只有 PostgreSQL 会用到。--db-table-prefixstring数据表前缀。--db-underscored/--no-db-underscoredboolean数据表名和字段名是否使用下划线风格。--db-dialect在源码中同样受options: [kingbase, mariadb, mysql, postgres]白名单约束。配置清理参数参数类型说明--unsetstring[]按 flag 的规范名清空一个或多个已保存字段。支持重复传入也支持逗号分隔比如--unset git-url,username。源码视角命令到底做了什么阅读 EnvUpdate 命令实现 可以看清nb env update的完整执行路径这部分机制正是文档说明章节中各种行为的底层依据。1. 无参数时走运行时重新同步run()方法先解析--unsetnormalizeUnsetFields与所有显式传入的配置字段collectProvidedConfigFields统计出是否存在配置变更变更判定逻辑。当hasConfigChanges为假时命令直接调用refreshRuntime内部通过updateEnvRuntime来自 bootstrap 库拉取该 env 运行时的最新版本并刷新输出类似Updated env name to runtime version的提示。这就是不带配置参数时按当前 env 状态重新同步的实现。2. 有参数时先校验、再保存、按需刷新运行时存在配置变更时命令按以下顺序执行run 方法主体互斥与约束校验同一字段不能同时用--unset和显式赋值否则报Cannot combine --unset field with an explicit update for the same field.--access-token/--token只能配合--auth-type token使用报--access-token or --token can only be used with --auth-type token.--username只能在 env 使用 basic 认证或显式传--auth-type basic时使用传入--api-base-url时会调用validateApiBaseUrl做合法性校验API 地址校验。构建新配置以当前 env 已保存的config、apiBaseUrl、authType、authUsername为基底仅覆盖本次显式传入的字段buildCurrentConfigInput再通过--unset删除指定字段applyUnsetField会按规范名映射到存储字段如username映射到authUsername。保存调用replaceEnvConfig写回存储。字段到存储键的映射由 env-command-config.ts 中的ENV_STRING_CONFIG_FLAG_MAP与ENV_BOOLEAN_CONFIG_FLAG_MAP统一维护保证 flag 名与存储字段一一对应。运行时刷新只有当本次变更包含api-base-url或access-token时shouldRefreshRuntime保存后才会自动执行运行时刷新刷新失败时会输出警告块已保存配置但运行时刷新失败配置本身不会回滚。3. 更新完成后的自动提示对于只改保存值、不刷新运行时的场景命令会调用printConfigUpdateHints输出针对性建议提示逻辑这些提示正是文档说明中各条注意事项的代码来源若变更字段命中APP_RESTART_WITH_DB_FIELDSbuiltin-db、db-dialect、builtin-db-image、db-port、db-database、db-user、db-password、storage-path且 env 使用内置数据库则提示执行nb app restart --env name --with-db若变更字段命中APP_RESTART_FIELDSapp-path、app-port、app-key、timezone及各类db-*等则提示执行nb app restart --env name若变更了源码类字段则提示保存的源码设置已更新现有本地源码文件不会被自动替换若认证方式切到basic/oauth、token 被清空则提示执行nb env auth name重新认证。这套字段 → 集合 → 提示的机制意味着你不需要记住每个参数变更后的后续动作命令会根据你实际改动的字段给出精确建议。相关行为在 env-update 测试用例 中有对应的断言覆盖。使用说明与约束以下条目完整继承自 文档说明章节建议结合上一节的实现机制一起理解如果你只是想让 CLI 按当前 env 的最新状态重新同步直接执行nb env update或nb env update name就够了不需要额外参数。更新完成后CLI 会根据这次变更自动处理需要的后续同步。其他参数只会更新已保存的 env 配置不会自动重启应用也不会自动替换本地源码或 Docker 镜像。修改app-path、app-port、timezone、db-*这类配置后CLI 通常会提示你后续执行nb app restart --env name如果变更涉及 CLI 托管的内置数据库则会提示使用nb app restart --env name --with-db。修改app-port、app-public-path、cdn-base-url这类会影响反向代理渲染结果的配置后如果你已经在用nb proxy nginx或nb proxy caddy通常还要重新执行对应的generate。更新source、download-version、docker-registry、git-url、npm-registry这类源码设置时只会改保存值现有本地源码、依赖和镜像不会自动替换。--access-token不能和--auth-type basic或--auth-type oauth一起使用。同一个字段不能同时用--unset和显式赋值比如不能同时写--unset git-url和--git-url ...。如果你把认证方式切到basic或oauth或者清空了 token后续通常还要执行nb env auth name。示例以下示例完整来自 官方参考文档覆盖了同步、认证、源码、应用与清理的典型场景# 让当前 env 按最新状态重新同步 nb env update # 让指定 env 按最新状态重新同步 nb env update prod # 更新 API 地址 nb env update prod --api-base-url http://localhost:13000/api # 更新 token并把认证方式切到 token nb env update prod --access-token token # 切到 basic 认证只保存用户名稍后再执行 nb env auth nb env update prod --auth-type basic --username admin # 调整源码来源和版本只更新已保存配置 nb env update local --source git --git-url gitgithub.com:nocobase/nocobase.git --download-version next # 调整应用端口和时区稍后再重启应用 nb env update local --app-port 13080 --timezone Asia/Shanghai # 调整应用公开访问路径改完后通常还要重新生成 proxy nb env update local --app-public-path /nocobase/ # 保存客户端静态资源的 CDN 基地址 nb env update local --cdn-base-url https://cdn.example.com/nocobase/ # 清空已保存的字段 nb env update local --unset git-url --unset username nb env update local --unset git-url,username对照源码可以看出两个细节--access-token token之所以会顺便把认证切到token是因为tokenOverride触发后会强制nextInput.authType token而--unset之所以只接受规范名如git-url而非存储键gitUrl是因为normalizeUnsetFields会先对照UNSETTABLE_FIELDS白名单做校验非法字段名会直接报错并列出所有支持的字段。相关命令nb apinb env authnb env infonb env addnb app restartnb source download【免费下载链接】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),仅供参考