Eleventy - 是否该升级到版本3?
内容提要
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导入的问题。