更新 EmDash

本页内容

本指南面向站点运维人员:运行基于 EmDash 构建的站点并希望更新到较新版本的人。它涵盖了 emdash 包和 @emdash-cms/cloudflare。插件包有自己的指南 Upgrading plugins on your site,而您自己集合和字段的变更在 Evolving a Deployed Site 中介绍。

发布和版本号

EmDash 在 1.0 版本之前发布,其版本号遵循两条规则:

  • 补丁版本,例如 0.35.0 到 0.35.1,包含错误修复和小改进。
  • 次要版本,例如 0.35 到 0.36,包含新功能和任何破坏性变更。破坏性变更在其发布条目中标记为 Breaking,条目中说明了需要您采取的操作。

emdash@emdash-cms/cloudflare 一起发布并共享一个版本号。@emdash-cms/cloudflare 依赖于完全匹配的 emdash 版本,因此请在一步中更新这两个包。@emdash-cms/plugin-forms 等插件包有自己的版本号,并声明所需的最低 emdash 版本。

发布页面 每个包和版本有一个条目。在更新之前,阅读您安装的版本到目标版本之间的 emdash 条目,如果站点在 Cloudflare 上运行,还需阅读 @emdash-cms/cloudflare 的相同范围。

更新前

进行备份。新版本应用到数据库的核心迁移没有撤销步骤,因此备份是恢复到先前状态的唯一方法。Backups 描述了每种数据库的选项。

检查构建站点的机器上的 Node.js 版本,以及对于 Node.js 部署的服务器上的版本。Getting Started 列出了支持的版本。

更新包

以下命令使用 pnpm 和从 Cloudflare 模板创建的站点。对于 Node.js 部署,请省略 @emdash-cms/cloudflare

  1. 检查已安装的版本和最新版本。

    pnpm outdated emdash @emdash-cms/cloudflare
  2. 将两个包更新到最新版本。

    模板生成的 package.json 使用如 ^0.35.0 的脱字符范围列出包。对于 1.0 以下的版本,脱字符范围仅允许补丁版本(0.35.1 可以,0.36.0 不可以),不带其他选项的 pnpm up 会保持在范围内。--latest 标志将范围重写为最新版本并安装它。

    pnpm up --latest emdash @emdash-cms/cloudflare

    package.json 中的插件包也添加到同一命令中。

  3. 构建站点。

    pnpm build

    构建会为已安装版本写入迁移清单。如果构建失败,请参阅 更新后站点出问题

  4. 在本地启动站点并在 /_emdash/admin 打开管理后台。

    pnpm dev

    EmDash 集成在开发服务器启动时生成 emdash-env.d.ts。待处理的核心迁移在第一次请求时运行。

部署和验证

像任何其他更改一样部署构建。以下命令部署 Cloudflare 站点;对于 Node.js 部署,使用新构建重启服务器进程。

pnpm wrangler deploy

使用默认的运行时迁移模式 auto,部署的站点在第一次请求时应用待处理的核心迁移。要在新代码接收流量之前应用迁移,并在之后验证已部署的数据库,请按照 Manage Core Database Migrations 操作。其 emdash migrate --check 命令在已部署数据库存在已安装版本的待处理或未知迁移时以非零退出。

部署后,打开管理后台和站点的一个公开页面。

更新后站点出问题

  • 构建失败,或您自己的页面在运行时出错:阅读跳过版本中标记为 Breaking 的发布条目,并进行其中说明的更改。
  • 插件加载失败:阅读插件自己的发布条目和 Upgrading plugins on your site
  • 错误提到 Astro API 或 @astrojs/* 包:EmDash 需要 Astro 6 或更高版本。Astro 的升级指南解释了如何一起更新 astro 及其官方集成。
  • 要返回之前的版本,请重新安装包的先前版本。重新安装不会撤销核心迁移;如果之前的版本在迁移后的数据库上失败,请恢复更新前的备份。