在我们最新的重大版本发布中,TinaCMS 正在进行重要的架构转变:我们将仅支持 ES 模块 (ESM),并结束对 CommonJS (CJS) 的支持。
这是一次必要的现代化,使 TinaCMS 与 JavaScript 生态系统的未来保持一致,确保更好的安全性、更新的依赖项和更流畅的开发者体验。
多年来,JavaScript 社区一直在从 CommonJS (require) 过渡到 ES 模块 (import/export)。虽然支持两者(双模式)长期以来一直是标准,但这通常导致“依赖地狱”、臃肿的包和被过时的 CJS 包阻止的安全漏洞。
通过转向纯 ESM,我们解决了三个关键痛点:
micromark 和 hast)已经转向纯 ESM。此更新允许 TinaCMS 与现代工具进行本地交互,而无需复杂的构建变通方案。此迁移的直接好处之一是能够升级 Mermaid。以前,我们被锁定在旧版本,因为新版本仅支持 ESM。通过此更新,我们已将 Mermaid 升级到最新版本,确保您在编辑器中的图表更快、更稳定且功能丰富。
将 CMS 迁移到 ESM 不仅仅是更改文件扩展名。我们的团队进行了大量工作,以确保自托管设置保持稳健。
database.ts) 的问题。系统现在正确处理临时输出文件,以确保 Node.js 将其视为 ESM。esbuild 横幅来填充 require,以确保即使您的某些底层数据库驱动程序仍使用 CJS,它们也能在新的 ESM 环境中正常运行。我们知道架构变更可能令人生畏。为了确保平稳过渡,我们对整个启动模板和常见配置套件进行了严格测试。
无论您使用的是元框架、静态网站生成器还是自定义自托管设置,我们都已验证构建、开发环境和生产部署保持稳定和高效。
要升级到仅支持 ESM 的 TinaCMS 版本,您需要更新您的包版本。
npm install tinacms@latest @tinacms/cli@latest
由于我们已放弃对 CommonJS 的支持,您必须确保您的项目使用 ESM 语法。
import 而不是 require。package.json 包含 "type": "module",或者确保您的配置文件在适当的地方使用 .ts / .mjs 扩展名。这次迁移是一个艰巨的任务,但它清除了构建下一代 TinaCMS 功能所需的技术债务。通过标准化 ESM,我们现在可以更快地行动,发布更小的包,并保持您的内容基础设施安全。
一如既往,如果您在迁移过程中遇到问题,请在 Discord 上联系我们或查看 GitHub 仓库。
致敬, TinaCMS 团队 🦙