157 lines
3.0 KiB
TypeScript
157 lines
3.0 KiB
TypeScript
import type { PageCategoryData } from './page-data.js'
|
|
|
|
export interface PlumeThemeBlogPostItem {
|
|
title: string
|
|
excerpt: string
|
|
path: string
|
|
tags?: string[]
|
|
sticky?: boolean | number
|
|
categoryList?: PageCategoryData[]
|
|
createTime: string
|
|
lang: string
|
|
encrypt?: boolean
|
|
cover?: string | BlogPostCover
|
|
}
|
|
|
|
export type PlumeThemeBlogPostData = PlumeThemeBlogPostItem[]
|
|
|
|
export interface PlumeThemeBlog {
|
|
|
|
/**
|
|
* 通过 glob string 配置包含文件,
|
|
*
|
|
* 默认读取 源目录中的所有 `.md` 文件,但会排除 `notes` 配置中用于笔记的目录。
|
|
*
|
|
* 如果希望只将某个目录下的文章读取为博客文章,比如 `blog` 目录,可以配置为:
|
|
* `['blog/**\/*.md']`
|
|
*
|
|
* @default - ['**\/*.md']
|
|
*/
|
|
include?: string[]
|
|
|
|
/**
|
|
* 通过 glob string 配置排除的文件
|
|
*
|
|
* _README.md 文件一般作为主页或者某个目录下的主页,不应该被读取为 blog文章_
|
|
*
|
|
* @default - ['.vuepress/', 'node_modules/', '{README,index}.md']
|
|
*/
|
|
exclude?: string[]
|
|
|
|
/**
|
|
* 分页
|
|
*/
|
|
pagination?: false | number | {
|
|
/**
|
|
* 每页显示的文章数量
|
|
* @default 15
|
|
*/
|
|
perPage?: number
|
|
}
|
|
|
|
/**
|
|
* 博客文章列表页链接
|
|
*
|
|
* @default '/blog/'
|
|
*/
|
|
link?: string
|
|
|
|
/**
|
|
* 是否启用博客文章列表
|
|
* @default true
|
|
*/
|
|
postList?: boolean
|
|
|
|
/**
|
|
* 是否启用标签页
|
|
* @default true
|
|
*/
|
|
tags?: boolean
|
|
|
|
/**
|
|
* 自定义标签页链接
|
|
*
|
|
* @default '/blog/tags/'
|
|
*/
|
|
tagsLink?: string
|
|
|
|
/**
|
|
* 标签颜色主题
|
|
*
|
|
* @default 'colored'
|
|
*/
|
|
tagsTheme?: 'colored' | 'gray' | 'brand'
|
|
/**
|
|
* 是否启用归档页
|
|
* @default true
|
|
*/
|
|
archives?: boolean
|
|
|
|
/**
|
|
* 自定义归档页链接
|
|
*
|
|
* @default '/blog/archives/'
|
|
*/
|
|
archivesLink?: string
|
|
|
|
/**
|
|
* 是否启用分类页
|
|
* @default true
|
|
*/
|
|
categories?: boolean
|
|
|
|
/**
|
|
* 自定义分类页链接
|
|
*
|
|
* @default '/blog/categories/'
|
|
*/
|
|
categoriesLink?: string
|
|
|
|
/**
|
|
* 分类页展开深度
|
|
*
|
|
* @default 'deep'
|
|
*/
|
|
categoriesExpand?: number | 'deep'
|
|
|
|
/**
|
|
* 博客文章封面图
|
|
*
|
|
* 配置封面图的位置,支持 `'left'`、`'right'`、`'top'`、`'top-inside'`
|
|
*
|
|
* @default 'right'
|
|
*/
|
|
postCover?: BlogPostCoverLayout | Omit<BlogPostCover, 'url'>
|
|
}
|
|
|
|
export type BlogPostCoverLayout = 'left' | 'right' | 'odd-left' | 'odd-right' | 'top'
|
|
|
|
export interface BlogPostCover {
|
|
/**
|
|
* 封面图链接地址,只能使用 绝对路径 以及 远程图片地址
|
|
*/
|
|
url: string
|
|
/**
|
|
* 博客文章封面图的位置
|
|
*/
|
|
layout?: BlogPostCoverLayout
|
|
/**
|
|
* 博客文章封面图的比例
|
|
*
|
|
* @default '4:3'
|
|
*/
|
|
ratio?: number | `${number}:${number}` | `${number}/${number}`
|
|
|
|
/**
|
|
* 封面图的宽度, 仅在 layout 为 'left' 或 'right' 时生效
|
|
*
|
|
* @default 240
|
|
*/
|
|
width?: number
|
|
/**
|
|
* 是否使用紧凑模式,紧凑模式下,封面图紧贴容器边缘
|
|
* @default false
|
|
*/
|
|
compact?: boolean
|
|
}
|