Loving Tina? us on GitHub0.0k
核心现代化以提升安全性和性能
November 26, 2025
By TinaCMS 团队

在我们最新的重大版本发布中,TinaCMS 正在进行重要的架构转变:我们将仅支持 ES 模块 (ESM),并结束对 CommonJS (CJS) 的支持。

这是一次必要的现代化,使 TinaCMS 与 JavaScript 生态系统的未来保持一致,确保更好的安全性、更新的依赖项和更流畅的开发者体验。

我们为何转向 ESM

多年来,JavaScript 社区一直在从 CommonJS (require) 过渡到 ES 模块 (import/export)。虽然支持两者(双模式)长期以来一直是标准,但这通常导致“依赖地狱”、臃肿的包和被过时的 CJS 包阻止的安全漏洞。

通过转向纯 ESM,我们解决了三个关键痛点:

  1. 安全性和漏洞: 停留在 CommonJS 上迫使我们保留某些依赖项的旧版本。通过转向 ESM,我们解锁了升级这些包的能力,大大减少了我们的漏洞足迹。
  2. 生态系统兼容性: 开源世界中的许多关键库(如 micromarkhast)已经转向纯 ESM。此更新允许 TinaCMS 与现代工具进行本地交互,而无需复杂的构建变通方案。
  3. 现代构建系统: 此更改简化了我们的构建管道,消除了由不一致的模块系统引起的混乱。

有哪些变化?

1. 更新的依赖项(Mermaid 等)

此迁移的直接好处之一是能够升级 Mermaid。以前,我们被锁定在旧版本,因为新版本仅支持 ESM。通过此更新,我们已将 Mermaid 升级到最新版本,确保您在编辑器中的图表更快、更稳定且功能丰富。

2. 解决自托管的复杂性

将 CMS 迁移到 ESM 不仅仅是更改文件扩展名。我们的团队进行了大量工作,以确保自托管设置保持稳健。

  • 数据库打包: 我们解决了 CLI 错误地打包用户数据库文件 (database.ts) 的问题。系统现在正确处理临时输出文件,以确保 Node.js 将其视为 ESM。
  • 填充: 我们实现了 esbuild 横幅来填充 require,以确保即使您的某些底层数据库驱动程序仍使用 CJS,它们也能在新的 ESM 环境中正常运行。

3. 生态系统的稳定性

我们知道架构变更可能令人生畏。为了确保平稳过渡,我们对整个启动模板和常见配置套件进行了严格测试。

无论您使用的是元框架、静态网站生成器还是自定义自托管设置,我们都已验证构建、开发环境和生产部署保持稳定和高效。

升级路径

要升级到仅支持 ESM 的 TinaCMS 版本,您需要更新您的包版本。

npm install tinacms@latest @tinacms/cli@latest

重大变更

由于我们已放弃对 CommonJS 的支持,您必须确保您的项目使用 ESM 语法。

  1. 检查您的导入: 确保您在 Tina 配置文件中使用 import 而不是 require
  2. 类型配置: 如果您运行期望 ESM 的脚本,请确保您的 package.json 包含 "type": "module",或者确保您的配置文件在适当的地方使用 .ts / .mjs 扩展名。

展望未来

这次迁移是一个艰巨的任务,但它清除了构建下一代 TinaCMS 功能所需的技术债务。通过标准化 ESM,我们现在可以更快地行动,发布更小的包,并保持您的内容基础设施安全。

一如既往,如果您在迁移过程中遇到问题,请在 Discord 上联系我们或查看 GitHub 仓库。

致敬, TinaCMS 团队 🦙

Last Edited: November 26, 2025