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 的地方删除即可。

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

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