NocoBase CLI 中 nb config delete 命令详解删除显式配置并回退默认值【免费下载链接】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 config delete是 NocoBase CLInb命令用于清理配置项的子命令它删除某个曾经通过nb config set显式写入的配置项使该键回退到内置默认值或运行时推导值。本篇结合官方参考文档与 CLI 源码讲清该命令的用法、支持的配置键全集、删除行为的源码级细节包括update.policy的遗留策略清理以及删除后如何用nb config get/nb config list验证结果。命令用法与参数命令的基本形式为nb config delete key参数类型说明keystring配置项名称必填支持的值见下文“支持的配置键”一节命令执行后只有两种输出对应 delete.ts 中的日志逻辑该键此前有显式值删除update.policy时还包括触发了遗留策略清理输出Deleted key该键从未被显式设置输出key was not set配置文件不发生任何改动。如果传入的键不在支持列表内命令会直接报错Unsupported config key key. Supported keys: 全部支持键完整键列表会一并打印方便排查拼写错误。支持的配置键与默认值源码中配置键白名单定义于 cli-config.ts 的SUPPORTED_CLI_CONFIG_KEYS共 21 个键。结合官方nb config参考文档index.md中的默认值说明完整清单如下配置项默认值回退值说明locale按 CLI 当前规则解析覆盖 CLI 使用的语言删除后回退到resolveCliLocale的推导结果update.policyprompt启动时更新策略prompt、auto或offlicense.pkg-urlhttps://pkg.nocobase.com/覆盖商业扩展包下载地址docker.networknocobaseCLI 管理的 Docker 应用默认网络docker.container-prefixnbCLI 管理的 Docker 容器默认前缀nb-image-registrydockerhub中文 locale 下为aliyun官方 NocoBase 镜像默认使用的仓库体系dockerhub或aliyunnb-image-variantfull官方镜像标签变体standard、no-nginx、full或full-no-nginxbin.dockerdocker覆盖 Docker 可执行文件路径bin.caddycaddy覆盖 Caddy 可执行文件路径bin.gitgit覆盖 Git 可执行文件路径bin.nginxnginx覆盖 Nginx 可执行文件路径bin.pnpmpnpm覆盖 pnpm 可执行文件路径bin.yarnyarn覆盖 Yarn 可执行文件路径proxy.nb-cli-rootCLI home 根目录通常是用户 Home 目录把.nocobase路径映射到代理进程实际看到的根目录proxy.caddy-driverlocalnb proxy caddy默认运行方式local或dockerproxy.nginx-driverlocalnb proxy nginx默认运行方式local或dockerproxy.upstream-host127.0.0.1代理回源到 NocoBase 应用时使用的主机地址default-ui-host127.0.0.1nb init默认 UI 主机地址default-api-host127.0.0.1nb init默认 API 主机地址log.enabledtrue是否记录 CLI 命令日志log.retention-days14CLI 命令日志保留天数几点需要特别注意的回退细节均出自 getEffectiveCliConfigValuedocker.network与docker.container-prefix的生效默认值不是固定的源码中会先取当前配置作用域的config.name为空才回落到nocobase/nb。nb-image-registry在 locale 为zh-CN时生效默认值是aliyun对应registry.cn-shanghai.aliyuncs.com/nocobase/nocobase其他语言回落到dockerhub。因此删除该键后的实际镜像源取决于当前locale。nb-image-variant只影响官方镜像 tag 的推导例如版本1.7.14下full对应1.7.14-fullfull-no-nginx对应1.7.14-full-no-nginx。proxy.nb-cli-root的回退值是resolveCliHomeRoot()的返回值即NB_CLI_ROOT环境变量指定的路径未设置时为用户 Home 目录见 cli-home.ts。源码中的执行流程nb config delete的完整调用链在 commands/config/delete.ts 中非常短通过 oclif 解析必填参数key调用assertSupportedCliConfigKey(key)做白名单校验不在列表内直接抛错调用deleteCliConfigValue(key)执行真正的删除返回boolean表示“此前是否有显式值”若key update.policy额外调用clearLegacyStartupUpdatePolicyForCurrentInstall()清理遗留的启动更新策略见下文专节根据两个布尔值输出Deleted key或key was not set。核心删除逻辑在 deleteCliConfigValueexport async function deleteCliConfigValue( key: SupportedCliConfigKey, options: CliConfigOptions {}, ): Promiseboolean { const scope resolveScope(options); const config await loadExactAuthConfig(scope); const hadValue Boolean(getExplicitCliConfigValue(config, key)); if (!hadValue) { return false; // 从未显式设置直接返回 false不改文件 } config.settings cloneSettings(config); // 按 key 从 settings 对应分组locale/update/docker/bin/proxy/log/init/license中删除字段 // ... pruneSettings(config); // 清理变空的分组 await saveAuthConfig(config, scope); return true; }这里有三个值得注意的设计“删除”只针对显式值。函数先用getExplicitCliConfigValue判断该键是否真的写过没有写过的键不会触碰配置文件命令输出was not set。这保证了delete是幂等的且不会把默认值意外固化进文件。删除后执行pruneSettings剪枝。pruneSettings 会把删空后的分组整个移除比如删掉唯一的docker.network后空的settings.docker对象会被删除当所有分组都空了settings本身也会被删除避免配置文件中残留无意义的空结构。配置存储与认证存储共用同一存储层。loadExactAuthConfig/saveAuthConfig来自 auth-store.tsnb config的各项设置实际存放在与 CLI 凭证同目录、同作用域global的 JSON 配置中。从源码结构看配置根目录由 cli-home.ts 解析优先读取NB_CLI_ROOT环境变量否则回落到用户 Home 目录目录名固定为.nocobase。update.policy 的特殊处理清理遗留启动更新策略删除update.policy时命令会额外触发 clearLegacyStartupUpdatePolicyForCurrentInstallexport async function clearLegacyStartupUpdatePolicyForCurrentInstall(): Promiseboolean { const state await readState(); const current getCurrentInstallEntry(state); if (!current?.policy) { return false; } await writeCurrentInstallEntry(() ({ lastCheckedDate: current.lastCheckedDate, })); return true; }背景是 CLI 早期把启动更新策略disabled/daily记录在 CLI home 目录下的startup-update.json状态文件里按“当前安装”以bin/run.js的绝对路径为键保存后来策略统一收敛到update.policy配置项遗留状态成为需要迁移的负担。该函数的作用就是清掉当前安装条目中残留的policy字段映射关系为disabled → off、daily → prompt见 resolveLegacyStartupUpdatePolicy同时保留lastCheckedDate避免清理策略后又触发一次冗余的更新检查。由此产生一个细微但重要的行为即使update.policy从未被nb config set设置过只要startup-update.json中当前安装条目里还有遗留策略删除该键也会输出Deleted update.policy。这是 delete.ts 中removed || clearedLegacy或判断的直接结果阅读命令输出时不必困惑。同理nb config set update.policy设置新值时也会调用同一个清理函数保证遗留策略不会继续“暗中生效”见 set.ts。实战示例官方文档中给出的删除示例完整保留自 delete.mdnb config delete locale nb config delete update.policy nb config delete docker.network nb config delete docker.container-prefix nb config delete nb-image-registry nb config delete nb-image-variant nb config delete proxy.nb-cli-root nb config delete proxy.upstream-host nb config delete bin.nginx nb config delete bin.git nb config delete bin.pnpm命令自身的示例列表oclifexamples见 delete.ts还额外覆盖了一些文档示例未列出的键nb config delete bin.docker nb config delete bin.caddy nb config delete bin.yarn nb config delete log.enabled nb config delete log.retention-days推荐的验证流程是删除前先get确认显式值删除后再get/list确认回退# 1. 查看当前生效值未显式设置时返回默认值 nb config get nb-image-registry # 2. 删除显式设置 nb config delete nb-image-registry # 3. 再次读取应回退到默认值dockerhub或 zh-CN locale 下的 aliyun nb config get nb-image-registry # 4. 列出仍然显式设置过的所有配置项 nb config list典型使用场景临时改用内网/私有镜像仓库或自定义网络名后执行完迁移需要还原环境修改过bin.nginx、bin.git等可执行文件路径做故障排查后恢复默认命令解析关闭过启动更新提示update.policy设为off之后想恢复默认的询问行为——此时删除该键即可同时遗留策略也会被一并清理在 CI 或容器中以NB_CLI_ROOT隔离配置根目录时删除键可以避免测试间串扰proxy.nb-cli-root删除后回退到该隔离根目录。注意事项小结delete与get的语义不同get在键未设置时返回生效值显式值或默认值而delete只清理显式值并明确区分“删了”与“本来就没设”两种输出。回退默认值不一定等于文档表格中的“静态默认值”nb-image-registry受locale影响docker.network/docker.container-prefix受当前配置作用域名称影响验证时以nb config get的实际输出为准。键名拼写必须与白名单完全一致含.分隔如update.policy而非update_policy报错信息会直接列出全部合法键。修改配置后无需重启任何服务——nb的每次命令执行都会重新读取配置但已运行中的 Docker 应用网络、容器前缀等不会被追溯更改需要用nb app相关命令重新部署。相关命令nb config set设置某个配置项nb config get读取某个配置项的生效值nb config list列出当前显式设置过的配置项nb config全部配置项与默认值总览命令入口源码packages/core/cli/src/commands/config/delete.ts配置存取与默认值源码packages/core/cli/src/lib/cli-config.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),仅供参考