评论配置
comment
评论配置,目前内置 giscus
、twikoo
、waline
、artalk
四种评论插件。
支持在文章页的 frontmatter
配置 comment.[key]
。
提示
支持每个文章页配置不同的在评论区提供者 provider
。
ts
const tkConfig = tkThemeConfig({
comment: {
provider: "giscus", // 评论区提供者
// 评论区配置项,根据 provider 不同而不同,具体看对应官网的使用介绍
options: {
// twikoo 配置,官网:https://twikoo.js.org/
// envId: "your envId",
// link: "https://cdn.jsdelivr.net/npm/twikoo@1.6.41/dist/twikoo.min.js",
// waline 配置,官网:https://waline.js.org/
// serverURL: "your serverURL",
// jsLink: "https://unpkg.com/@waline/client@v3/dist/waline.js",
// cssLink: "https://unpkg.com/@waline/client@v3/dist/waline.css",
// giscus 配置,官网:https://giscus.app/zh-CN
repo: "your repo",
repoId: "your repoId",
category: "your category",
categoryId: "your categoryId",
// artalk 配置,官网:https://artalk.js.org/
// server: "your server",
// site: "site",
},
},
});
yaml
---
tk:
comment:
provider: giscus
options:
repo: your repo
repoId: your repoId
category: your category
categoryId: your categoryId
---
ts
interface TkThemeConfig {
/**
* 评论配置
*/
comment?:
| CommentConfig<"twikoo">
| CommentConfig<"waline">
| CommentConfig<"giscus">
| CommentConfig<"artalk">
| CommentConfig<"render">;
}
type CommentConfig<T extends keyof CommentProvider = "twikoo" | "waline" | "giscus" | "artalk" | "render"> = {
/**
* 评论区提供者
* twikoo 官网:https://twikoo.js.org/
* waline 官网:https://waline.js.org/
* giscus 官网:https://giscus.app/zh-CN
* artalk 官网:https://artalk.js.org/
* render 需要自定义评论区组件
*/
provider: T;
/**
* 评论区配置项,根据 provider 不同而不同,具体看对应官网的使用介绍
*/
options?: CommentProvider[T];
/**
* 自定义评论区组件,如果 provider 不满足,则可以自定义组件,返回一个 VNode,比如一个 vue 组件。当自定义组件时,请将 provider 设为 render
*
* @remark 例:{ provider: "render", render: () => <MyCommentVueComponent /> }
*/
render?: () => VNode;
};
export type CommentProvider = {
/**
* twikoo 评论区配置项
*/
twikoo: {
/**
* 官网其他配置项
*/
[key: string]: any;
envId: string;
/**
* twikoo.js 在线链接
* @default 'https://cdn.jsdelivr.net/npm/twikoo@{version}/dist/twikoo.min.js'
*/
link?: string;
/**
* twikoo 版本号,不定期更新为最新版
*
* @default '1.6.41'
*/
version?: string;
/**
* 页面渲染后多少毫秒开始渲染 twikoo,如果设置太短,可能获取的 DOM 还没加载完成
*
* @default 700 (0.7秒)
*/
timeout?: number;
/**
* katex 配置项,如果设置,则加载 katex
*/
katex?: {
/**
* katex 的 css、core、render 的在线链接
*/
cssLink: string;
coreJsLink: string;
renderJsLink: string;
/**
* katex 的 css、core、render 的 integrity
*/
cssIntegrity?: string;
coreJsIntegrity?: string;
renderJsIntegrity?: string;
};
};
/**
* waline 评论区配置项
*/
waline: {
/**
* 官网其他配置项
*/
[key: string]: any;
/**
* waline 后台服务器地址
*/
serverURL: string;
/**
* waline.js 在线链接,在线链接和依赖二选一,依赖安装为:`pnpm install @waline/client`。如果两个都设置,则优先使用 jsLink
*/
jsLink?: string;
/**
* waline.css 在线链接,在线链接和依赖二选一,和 jsLink 搭配使用。如果安装了依赖则不需要传入,如果两个都设置,则优先使用 cssLink
*/
cssLink?: string;
/**
* waline.css 的 integrity
*/
cssIntegrity?: string;
/**
* 暗黑模式,具体使用请看 waline 官网
*
* @default "html[class='dark']"
*/
dark?: string;
};
/**
* giscus 评论区配置项
*/
giscus: {
[key: string]: any;
repo: `${string}/${string}`;
repoId: string;
category: string;
categoryId: string;
mapping?: "url" | "title" | "og:title" | "specific" | "number" | "pathname";
strict?: "0" | "1";
reactionsEnabled?: "0" | "1";
emitMetadata?: "0" | "1";
inputPosition?: "top" | "bottom";
lang?: string;
theme?: string;
loading?: "lazy" | "eager";
/**
* 是否使用在线链接,如果不打算安装依赖,则设为 true
*
* @default false
*/
useOnline?: boolean;
/**
* giscus.js 在线链接,useOnline 为 false 时生效
*
* @default 'https://giscus.app/client.js'
*/
link?: string;
/**
* giscus.js 的 integrity
*/
integrity?: string;
};
/**
* artalk 评论区配置项
*/
artalk: {
[key: string]: any;
/**
* artalk 后台服务器地址
*/
server: string;
/**
* artalk 站点名称
*/
site: string;
};
/**
* 自定义评论组件
*/
render: Record<string, any>;
};
如果这四个评论区提供者都不符合需求,可以自己实现评论区,然后传入进来。
ts
import MyCommentComponent from "./components/MyCommentComponent.vue";
const tkConfig = tkThemeConfig({
comment: {
provider: "render",
render: MyCommentComponent,
},
});