Skip to content
On this page

Vitepress自动生成sitemap.txt--SEO优化

本文将讲述vitepress生成的静态页面网站如何自动化构建sitemap.txt站点地图,方便搜索引擎进行抓取。

网站是否需要sitemap?

根据google官方文档,如果你的文章页面量小于三位数,那么你没有必要提供站点地图,爬虫可以抓取到你网站所有页面,前提是你的所有页面都可以从主页通过点击进入。如果你的某些页面无法从主页进入或者站点的页面数量巨大,又或者你希望google早几天把页面编入索引,那么你需要一份sitemap--站点地图。

vitepress如何生成sitemap

网络上一些博客框架本身会提供seo的相关优化其中就包括了sitemap的生成,而vuepress也有相关的插件可以辅助生成。然而我的博客搭建使用的是vitepress搭配主题文件,翻遍了github也没有找到生成sitemap的工具,无奈之下,打开了vitepress官方文档,文档中提到,没有直接生成的属性,但是提供了buildEnd钩子,用户可以自己定义方法生成官方文档预览

打印siteConfig可以发现两个有用的属性pages和outDir。

  • pages是一个数组,包含了所有页面的路径,不过是md结尾的,我们拼上网站地址并将md替换为html即可。
  • outDir输出文件夹的地址。

最后我们在.vitepress文件夹的config.ts文件中添加以下代码

ts
const fs = require('fs');

export default defineConfig({
  // ...其他配置
  async buildEnd(siteConfig) {
    // 配置网站基础路径
    const baseURL = 'https://blog.laoyutang.cn';
    let siteMapStr = '';
    for (const page of siteConfig.pages) {
      siteMapStr += `${baseURL}/${page.replace(/md$/, 'html')}\n`;
    }
    // 生成文件
    try {
      fs.writeFileSync(`${siteConfig.outDir}/sitemap.txt`, siteMapStr);
    } catch (err) {
      console.log('create sitemap.txt failed!', err);
    }
  },
})

后记

代码实现很简单,只是网上没有相关讨论罢了,可能也没多少人像我用vitepress搭博客吧😂。最后感谢下粥里有勺糖大佬提供的博客主题,主题的清新加上vite的快速,很喜欢的组合。

上次更新于: