Eleventy - 是否该升级到版本3?

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

Eleventy的第三个版本有一些令人兴奋的新功能,如异步配置、虚拟模板和ECMAScript模块(ESM)支持。作者尝试升级,但遇到了一些问题,如YAML前置标记中的制表符、Sass插件版本检查失败和模板内容过早使用错误。作者暂时解决了这些问题,但需要花费更多时间来完全升级。作者还探索了将Eleventy配置转换为ESM的可能性,并提到了JSON导入的问题。作者决定在刷新网站后再进行升级。

🔎

延伸解读

升级前的风险评估

Eleventy v3 仍处于预发布阶段,使用它意味着你将成为“金丝雀测试者”。根据作者的经验,升级过程可能顺利,也可能遇到各种问题,具体取决于你的配置。因此,在升级前应做好时间预算,并准备好回滚方案。

常见升级障碍及应对

作者遇到了三个主要错误:YAML frontmatter 中的制表符、Sass 插件版本检查失败以及 TemplateContentPrematureUseError。其中,制表符问题可通过替换为空格快速解决;Sass 插件需等待更新;而 TemplateContentPrematureUseError 实际由 RSS 插件的 htmlAbsoluteUrls 过滤器引起,需调整模板或等待修复。

ESM 配置转换的注意事项

将 Eleventy 配置转换为 ESM 时,JSON 导入是一个棘手问题。Node 的 JSON 导入仍处于实验阶段,Eleventy 尚未优雅处理,在 serve 和 watch 模式下会导致崩溃。目前可通过 createRequire 变通解决,或将 JSON 文件转换为 JavaScript 文件。

升级决策的权衡

作者最终决定暂缓升级,因为完全升级需要重写部分网站功能,如更新 Sass 插件和将 RSS 模板转换为虚拟模板,这超出了其时间限制。对于类似情况,建议先评估升级的收益与成本,若时间有限,可等待正式版发布或先进行小范围测试。

❓

Q&A

Eleventy 3.0版本有哪些新功能?

Eleventy 3.0版本引入了异步配置、虚拟模板和ECMAScript模块(ESM)支持等新功能。

升级到Eleventy 3.0时遇到了哪些问题?

在升级过程中,遇到了YAML前置标记中的制表符问题、Sass插件版本检查失败和模板内容过早使用错误等问题。

如何解决YAML前置标记中的制表符问题?

将YAML前置标记中的制表符替换为两个空格即可解决该问题。

为什么Sass插件在Eleventy 3.0中不兼容?

Sass插件的版本检查不支持Eleventy 3.0,因此会导致构建失败。

作者决定何时进行Eleventy的升级?

作者决定在刷新网站后再进行Eleventy的升级。

如何将Eleventy配置转换为ESM?

可以通过编辑配置文件,使用最小数量的导入来尝试将Eleventy配置转换为ESM,但需要注意JSON导入的问题。

➡️

继续阅读