Eleventy(11ty)中文 tags 报错解决方法

Eleventy(简称 11ty)是一个轻量、灵活、可高度定制化的静态网站生成器。在中文项目中,很多开发者喜欢在 front matter 或数据文件中使用中文标签(tags)对内容进行分类,但在某些情况下这会导致构建报错。下面我们先看可能出现的错误表现,接着分析原因与解决方案。

常见错误表现与报错信息

在使用中文 tags 的情况下,构建 Eleventy 项目时可能会遇如下错误:

Output conflict: multiple input files are writing to `./_site/tags/index.html`. Use distinct `permalink` values to resolve this conflict.   

[11ty]   1. ./content/tag-pages.njk

[11ty]   2. ./content/tags.njk (via DuplicatePermalinkOutputError)

问题根因分析

造成中文 tags 报错或处理异常的背后,主要是如下原因原因:

中文字符在 slugify / permalink / 过滤器中的处理不全,当你在 permalink、slugify 或模板中过滤标签名、URL 化标签、构建标签页路径时,中文字符可能无法被标准 slugify 处理,导致标签路径空白、冲突或者无法输出。

解决方案

Eleventy 原来是支持中文Url的,只是在 slugify 插件处理Url的时候出现了问题,解决方法是不用这个插件即可。在项目中搜索用到 slugify 的地方删除即可。

Eleventy(11ty)中文 tags 报错解决方法

这样修改后,你的文章里设置了中文tags后仍然可以生成静态页成功了,不会再报错了。下面是中文tags页面效果:

Eleventy(11ty)中文 tags 报错解决方法

不用这个插件的话可以把这个插件uninstall掉。这样就可以开始使用Eleventy(11ty)构建你的中文博客了。

评论