倘若没有骄傲的思想,人将不成其为人,他自身的弱点会使他蜕化为禽兽。——高尔基

今天实现了vuepress中获取所有页面的frontmatter

frontmatter是页面的页头信息,例如:

1
2
3
4
5
---
title: xxx
author: 作者
date: 2023-08-17
---

可以编写一个插件:

1
2
3
4
5
6
7
8
9
10
11
12
13
module.exports = (options, context) => ({
extendPageData($page) {
const { pages } = context;

// 获取除首页外的其他所有页面的 frontmatter 数据
const frontmatters = pages
.filter(page => page.path !== '/')
.map(page => page.frontmatter);

// 将 frontmatter 数组传递给首页的 frontmatter
$page.frontmatter.homepageFrontmatters = frontmatters;
}
});

然后配置一下:

1
2
3
4
plugins: [
// ....其他plugin
[require('../plugins/frontmatter'), {}]
]

接下来是使用

1
console.log(this.$frontmatter.homepageFrontmatters)

效果: