Skip to content
博客主题v1.3迁移指南

目前还处于v1.3.0-beta.1测试阶段, 可能与最终 1.3 版本略有区别,不过目前接口命名不会进行大修改了


警告

目前 v1.3.0 依然处于测试阶段,可能部分新增配置并无实际影响(其实就是接口定义了,还没写对应的功能呢,如 homePageLink)

主题配置

默认配置baseConfig模块已移除,不再可以使用(目前为止是这样的)

为最大化利用 TS 类型提示,推荐把config.mjs转为config.ts

现在所有配置中 img 类型如下:

ts
declare type Open17Image = string | { light?: string; dark?: string };

现配置框架推荐如下

ts
import type { ThemeConfig } from "vitepress-theme-open17/config";
import { defineConfigWithTheme } from "vitepress";
export default defineConfigWithTheme<ThemeConfig>({
  // ...
});
ts
import type { ThemeConfig } from "vitepress-theme-open17/config"; 
import baseConfig from 'vitepress-theme-open17/config'
import { defineConfigWithTheme } from "vitepress"; 
import { defineConfig } from 'vitepress'
export default
defineConfigWithTheme<ThemeConfig>({ 
defineConfig({ 
    extends: baseConfig, 
    // ...
})

然后主题配置略有更改,下面是一个本 demo 的配置修改示例

不清楚的地方可以参考配置类型声明

ts
themeConfig: {
    blog: {
      avatar: "/ava.jpg", 
      ornateStyle: true, 
      maxTags: 5, 
      pageSize: 5,  
      tagPageLink: '/page/tags',
      user: {   
        name: "Open17", 
        avatar: "/ava.jpg", 
      },    
    },
    home: { 
      maxTagsDisplayed: 20, 
      postsPerPage: 5,  
    },  
    comment: {
      use: true,
      repo: "open17/vitepress-theme-open17",
      repo_id: "R_kgDOLkFVUg", 
      repoId: "R_kgDOLkFVUg", 
      category: "Announcements",
      category_id: "DIC_kwDOLkFVUs4ChFZx",  
      categoryId: "DIC_kwDOLkFVUs4ChFZx",  
      mapping: "pathname",
      strict: "0",
      reactions_enabled: "1",   
      reactions_enabled: "1",   
      emit_metadata: "0",
      input_position: "top",    
      inputPosition: "top",    
      lang:"en"
    },
},
ts
declare type Open17Image = string | { light?: string; dark?: string };

declare namespace Open17Theme {
  // 用户卡片配置
  interface UserCardConfig {
    hidden?: boolean;
    name?: string;
    avatar?: CustomImage;
    describe?: string;
  }

  interface WidgetConfig {
    name: string;
    html: string;
    link?: string;
  }
  // 博客全局配置
  interface BlogConfig {
    direct?: "lft" | "rgt";
    bgImage?: Open17Image;
    cover?: Open17Image;
    tagPageLink?: string;
    homePageLink?: string;
    archivePageLink?: string;
    widgets?: Array<Open17Theme.WidgetConfig>;
    pureMode?: boolean; // 隐藏左边栏
    user?: Open17Theme.UserCardConfig; // 用户卡片配置
  }

  // 首页配置
  interface HomePageConfig {
    maxTagsDisplayed?: number; // 首页标签栏显示的最大标签数量
    postsPerPage?: number; // 每页的博客文章数量
  }

  // 评论配置
  type BooleanString = "0" | "1";
  interface CommentConfig {
    use?: boolean;
    repo: `${string}/${string}`;
    repoId: string;
    category?: string;
    categoryId?: string;
    mapping: "url" | "title" | "og:title" | "specific" | "number" | "pathname";
    strict?: BooleanString;
    reactionsEnabled?: BooleanString;
    emitMetadata?: BooleanString;
    inputPosition?: "top" | "bottom";
    lang?: string;
  }

  // RSS配置
  interface FeedConfig {
    baseUrl: string; // 你的部署的域名,必须
    copyright?: string; //版权声明,可选
    image?: string; // RSS图片,可选
    favicon?: string; //RSS图标,可选
  }
}

// 主配置接口 ThemeConfig
declare module "vitepress-theme-open17/config" {
  import type { DefaultTheme } from "vitepress";
  export interface ThemeConfig extends DefaultTheme.Config {
    blog?: Open17Theme.BlogConfig; // 博客配置
    comment?: Open17Theme.CommentConfig; // 评论配置
    home?: Open17Theme.HomePageConfig;
    feed?: Open17Theme.FeedConfig;
  }
}