Pagefind 构建流水线

Pagefind 构建流水线

选 Pagefind 的理由

  • 零运行时依赖——索引是预构建的静态文件
  • 中文友好——基于 Rust 写的 lunr.js 替代品
  • ——索引文件 100KB 起步
  • 支持子串搜索和权重——比 Hugo 自身的 \.Site.Search 强太多

安装

npm install --save-dev pagefind

索引范围控制

默认 Pagefind 会索引整个 HTML 页面。问题:导航、侧栏、页脚的文字都会被搜到,结果全是 chrome。

解决方法:在不想被搜的元素上加 data-pagefind-ignore

<nav data-pagefind-ignore>...</nav>
<footer data-pagefind-ignore>...</footer>

反过来,在想被搜的容器上加 data-pagefind-body

<article data-pagefind-body>
  <h1>...</h1>
  <p>正文...</p>
</article>

构建命令

pagefind --site public --output-subdir pagefind

路径陷阱

pagefind.js 实际位置是 /pagefind/pagefind.js不是 /_pagefind/pagefind.js(下划线 vs 短横线)。我之前因为这个 debug 了一小时。

性能

1 千篇文章索引耗时 3 秒,索引文件大小 2-3MB。完全够个人博客用。

评论