mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import type { App, PluginConfig } from 'vuepress'
|
|
import type { ThemeBuiltinPlugins } from '../../shared/index.js'
|
|
import { isPlainObject } from '@vuepress/helper'
|
|
import { gitPlugin as rawGitPlugin } from '@vuepress/plugin-git'
|
|
import { getThemeConfig } from '../loadConfig/index.js'
|
|
|
|
/**
|
|
* Setup git plugin
|
|
*
|
|
* 设置 Git 插件,用于显示文章的最后更新时间、贡献者和变更历史
|
|
*/
|
|
export function gitPlugin(app: App, pluginOptions: ThemeBuiltinPlugins): PluginConfig {
|
|
const options = getThemeConfig()
|
|
|
|
const git = pluginOptions.git ?? app.env.isBuild
|
|
|
|
if (!git) {
|
|
// disable all git features
|
|
return [rawGitPlugin({
|
|
createdTime: false,
|
|
updatedTime: false,
|
|
contributors: false,
|
|
changelog: false,
|
|
})]
|
|
}
|
|
|
|
const excludes = ['home', 'friends', 'page', 'custom', false]
|
|
const changelogOptions = isPlainObject(options.changelog) ? options.changelog : {}
|
|
|
|
return [rawGitPlugin({
|
|
updatedTime: options.lastUpdated !== false,
|
|
contributors: isPlainObject(options.contributors) || options.contributors === true
|
|
? {
|
|
avatar: true,
|
|
...options.contributors === true ? {} : options.contributors,
|
|
}
|
|
: false,
|
|
changelog: options.changelog && options.docsRepo
|
|
? { repoUrl: options.docsRepo, ...changelogOptions }
|
|
: options.changelog,
|
|
filter(page) {
|
|
if (page.frontmatter.home || excludes.includes(page.frontmatter.pageLayout as string))
|
|
return false
|
|
return true
|
|
},
|
|
})]
|
|
}
|