Skip to content

vitepress 时间轴组件 用于展示git提交信息 ​

遇到的问题 ​

  1. 开始使用 fetch 访问静态资源来生成组件,但是到build时一直报错。

分析原因就是 build 时要生成静态页面,组件会把访问的URL转为静态的,调整为了直接读取json的方式。

又经过实验,build的报错是个烟雾弹!!

先说明一个前提,非常关键, vitepress 最终是以静态文件的形式部署到 github page 的,所以自定义组件中 api 的访问都会在 build 时被处理为静态页面,所以在 dev 时正常访问的 API ,到 build 时就会报错, api 访问失效,是因为只有当应用服务启动时,前端直接访问/data/commits.json才不报错。只需要增加错误处理即可。

==build时报错,真正部署时并不会有问题,关键是API的路径对。==

开发说明 ​

大体思路:新增一个工具脚本,在项目启动时会扫面git 提交信息,生成提交json,组件读取这个json文件,生成时间轴内容

  1. 新增组件 GitTimeline.vue
 └─theme
    ├─components
    │    └─ GitTimeline.vue
    └─index.ts
  1. 全局注册,在 index.ts 中
typescript
// .vitepress/theme/index.ts
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import GitTimeline from './components/GitTimeline.vue'

export default {
  extends: DefaultTheme,
  enhanceApp({ app }) {
    // 注册自定义全局组件
    app.component('GitTimeline',GitTimeline)
  }
} satisfies Theme

然后在页面中既可以使用组件了 <GitTimeline />