ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

NocoBase create-nocobase-app 安装升级指南:从 `yarn nocobase upgrade` 到指定版本升级的完整实战

NocoBase create-nocobase-app 安装升级指南:从 `yarn nocobase upgrade` 到指定版本升级的完整实战 NocoBase create-nocobase-app 安装升级指南从yarn nocobase upgrade到指定版本升级的完整实战【免费下载链接】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通过create-nocobase-app创建的项目即「应用目录安装」方式是 NocoBase 最常见的部署形态之一其升级路径独立于 Docker 镜像升级和 Git 源码升级。本文以官方升级文档为主体结合仓库内 CLI 源码系统讲解这类安装的完整升级流程升级前的数据库备份与进程停止、yarn nocobase upgrade一键升级、通过修改package.json升级到指定版本以及--skip-code-update等关键参数在底层命令实现中的真实作用。读完本文你将能独立完成一次安全、可控的 NocoBase 版本升级并理解升级命令每一步背后发生的事。:::warning 升级前的准备请务必先备份数据库停止运行中的 NocoBase :::备份是升级前不可省略的一步。NocoBase 的升级过程会执行数据库迁移upgrade migrations一旦迁移启动便不可逆因此数据库备份是回滚的唯一保障。对于采用 PostgreSQL、MySQL/MariaDB 或 SQLite 的部署请使用各自数据库原生的备份工具如pg_dump、mysqldump在升级前完成快照。1. 停止运行中的 NocoBase升级要求 NocoBase 处于停止状态。根据进程的运行方式选择对应的停止手段非后台运行的进程直接在终端中通过Ctrl C停止生产环境pm2 托管执行yarn nocobase pm2-stop命令停止yarn nocobase pm2-stop从源码看pm2-stop子命令的本质是调用 pm2 的kill命令将所有由 pm2 托管的 NocoBase 进程一并终止见 packages/core/cli-v1/src/commands/pm2.jscli .command(pm2-stop) .allowUnknownOption() .action(() { run(pm2, [kill]); });同文件还提供了pm2-restart对应pm2 restart all等配套命令可用于升级完成后的进程管理。pm2依赖被预置在 create-nocobase-app 生成的package.json模板中pm2: ^6.0.5见 packages/core/cli-v1/templates/create-app-package.json因此生产环境开箱即可使用这套 pm2 管理命令。2. 执行升级命令确认进程停止后进入应用目录并执行升级命令# 切换到对应的目录 cd my-nocobase-app # 执行更新命令 yarn nocobase upgrade # 启动 yarn dev其中yarn nocobase实际映射到项目package.json中的nocobase: nocobase-v1脚本同样由 create-app-package.json 模板生成即通过nocobase-v1CLI 执行子命令。升级命令底层做了什么upgrade子命令的完整实现位于 packages/core/cli-v1/src/commands/upgrade.js。在不带任何参数执行时它会依次完成两件事if (options.skipCodeUpdate) { await runAppCommand(upgrade); } else { await run(nocobase-v1, [update-deps]); await run(nocobase-v1, [upgrade, --skip-code-update]); }也就是说默认的yarn nocobase upgrade会先执行update-deps根据项目package.json拉取最新依赖版本再执行upgrade --skip-code-update只运行数据库升级迁移与必要的数据变更。因此一次完整的升级包含依赖更新 应用升级数据库迁移两个阶段命令执行前还会调用checkDBDialect()校验当前数据库方言是否受支持。新版本 CLI 的升级实现仓库中还包含新一代 CLIpackages/core/cli其app upgrade命令的实现位于 packages/core/cli/src/commands/app/upgrade.tspackages/core/cli/src/commands/upgrade.ts 中的Upgrade类即对它的包装。新实现引入了基于 env 的应用运行态管理其升级流程为app:stop停止应用→ 按需拉取新源码或镜像source:download→ 同步商业插件license:plugins:sync→app:start重启并执行升级迁移 → 持久化新版本号persistDownloadVersion→ 刷新 env 配置。值得注意的是在新 CLI 中--skip-code-update已被标记为deprecated作为--skip-download的别名保留跳过源码/镜像下载仅用已保存的源码或镜像重启并执行迁移详见 upgrade.ts 中的 flag 定义。如果你已迁移到新 CLI 环境应优先使用--skip-download简写-s。3. 升级到指定版本默认升级命令会拉取最新可用版本若需要升级到指定版本注意只能升级不能降级需要先修改项目根目录的package.json文件调整nocobase/cli和nocobase/devtools的版本号。例如从1.5.11升级到1.6.0-beta.8{ dependencies: { - nocobase/cli: 1.5.11 nocobase/cli: 1.6.0-beta.8 }, devDependencies: { - nocobase/devtools: 1.5.11 nocobase/devtools: 1.6.0-beta.8 } }然后执行升级命令yarn install yarn nocobase upgrade --skip-code-update这里的操作顺序值得说明yarn install依据修改后的package.json安装指定版本的nocobase/cli与nocobase/devtools完成代码层面的版本切换yarn nocobase upgrade --skip-code-update则跳过依赖更新阶段代码已经是目标版本只执行应用升级数据库迁移避免重复拉取依赖。对照上文源码可见--skip-code-update简写-S使 CLI 直接走runAppCommand(upgrade)分支。需要再次强调NocoBase 的版本升级是单向的一旦升级并完成数据库迁移将无法回退到旧版本这也是官方在升级前反复强调备份数据库的根本原因。4. 升级后的验证与常见注意事项升级完成后建议按以下顺序做基础验证确认服务正常启动yarn dev后观察启动日志有无报错进入 NocoBase 管理界面检查版本号是否已变为目标版本抽查核心业务数据是否完整重点确认数据库迁移是否按预期执行如升级过程中断或报错先依据日志定位问题必要时从备份恢复数据库后再重新走升级流程。其他注意事项汇总升级前必须停止所有 NocoBase 进程避免升级迁移与运行中的服务并发操作数据库nocobase/cli与nocobase/devtools的版本号应保持一致防止 CLI 与前端开发工具链版本错位指定版本升级时使用的版本号必须以仓库实际发布的版本为准示例中的1.6.0-beta.8仅为文档演示格式若你的部署方式是 Docker 或 Git 源码安装请参考对应的升级文档Docker 安装升级 与 Git 源码安装升级它们的流程与本篇的 create-nocobase-app 方式不同不可混用。5. 深入理解从命令到源码的调用链为便于读者在仓库中继续追踪这里汇总本文涉及的升级相关源码路径关注点源码位置yarn nocobase upgrade命令实现含--skip-code-update分支packages/core/cli-v1/src/commands/upgrade.jspm2-stop/pm2-restart实现packages/core/cli-v1/src/commands/pm2.jscreate-nocobase-app 生成的package.json模板packages/core/cli-v1/templates/create-app-package.json新 CLI 的app upgrade命令env 管理、--skip-downloadpackages/core/cli/src/commands/app/upgrade.ts新 CLI 的upgrade命令包装packages/core/cli/src/commands/upgrade.ts新 CLI 升级相关测试packages/core/cli/src/tests/app-management-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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进