mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
commit
3e34309fb4
@ -1,3 +1,12 @@
|
||||
# [1.0.0-rc.22](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.21...v1.0.0-rc.22) (2024-1-8)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复在最小配置下的预设问题 [#40](https://github.com/pengzhanbo/vuepress-theme-plume/issues/40) ([2dbbc79](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2dbbc79a757a6ea21a01a239414ead137314dcf6))
|
||||
|
||||
|
||||
|
||||
# [1.0.0-rc.21](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.20...v1.0.0-rc.21) (2024-1-8)
|
||||
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "vuepress-theme-plume-monorepo",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@8.14.0",
|
||||
"author": "pengzhanbo <q942450674@outlook.com> (https://github.com/pengzhanbo/)",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-auto-frontmatter",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-baidu-tongji",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com> (https://github.com/pengzhanbo/)",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-blog-data",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-caniuse",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2, Support Can-I-Use feature",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-content-update",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-copy-code",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-iconify",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "vuepress-plugin-netlify-functions",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2, Support Netlify Functions",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-notes-data",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -83,7 +83,10 @@ export function watchNotesData(app: App, watchers: any[], options: NotesDataOpti
|
||||
if (!allOptions.length)
|
||||
return
|
||||
|
||||
const [firstLink, ...links] = allOptions.map(option => option.link)
|
||||
const [firstLink, ...links] = allOptions.map(option => option.link).filter(Boolean)
|
||||
|
||||
if (!firstLink)
|
||||
return
|
||||
|
||||
const dir = path.join('pages', firstLink, '**/*')
|
||||
const watcher = chokidar.watch(dir, {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "plugin-page-collection",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"private": true,
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vuepress-plume/plugin-shikiji",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "The Plugin for VuePres 2",
|
||||
"author": "pengzhanbo <volodymyr@foxmail.com>",
|
||||
"license": "MIT",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "vuepress-theme-plume",
|
||||
"type": "module",
|
||||
"version": "1.0.0-rc.21",
|
||||
"version": "1.0.0-rc.22",
|
||||
"description": "A Blog&Document Theme for VuePress 2.0",
|
||||
"author": "pengzhanbo <q942450674@outlook.com> (https://github.com/pengzhanbo/)",
|
||||
"license": "MIT",
|
||||
|
||||
@ -25,15 +25,15 @@ const homeStyle = computed(() => {
|
||||
mask.value
|
||||
? `linear-gradient(rgba(0, 0, 0, ${mask.value}), rgba(0, 0, 0, ${mask.value}))`
|
||||
: '',
|
||||
`url(${withBase(matter.value.banner || '')})`,
|
||||
`url(${withBase(matter.value.banner ?? 'https://pengzhanbo.cn/images/home-banner.jpg')})`,
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(','),
|
||||
}
|
||||
})
|
||||
|
||||
const name = computed(() => matter.value.hero?.name)
|
||||
const tagline = computed(() => matter.value.hero?.tagline)
|
||||
const name = computed(() => matter.value.hero?.name ?? 'Plume')
|
||||
const tagline = computed(() => matter.value.hero?.tagline ?? 'A VuePress Theme')
|
||||
const text = computed(() => matter.value.hero?.text)
|
||||
|
||||
const actions = computed(() => {
|
||||
@ -44,7 +44,7 @@ const actions = computed(() => {
|
||||
<template>
|
||||
<div class="plume-home" :style="homeStyle">
|
||||
<div class="container">
|
||||
<div v-if="matter.hero" class="content">
|
||||
<div class="content">
|
||||
<h2 v-if="name" class="hero-name">
|
||||
{{ name }}
|
||||
</h2>
|
||||
|
||||
@ -2,7 +2,7 @@ import type { App } from '@vuepress/core'
|
||||
import { deepClone, deepMerge } from '@pengzhanbo/utils'
|
||||
import type { PlumeThemeLocaleOptions } from '../shared/index.js'
|
||||
import { pathJoin } from './utils.js'
|
||||
import { resolveLocaleOptions } from './resolveLocaleOptions.js'
|
||||
import { resolveLocaleOptions, resolvedAppLocales } from './resolveLocaleOptions.js'
|
||||
|
||||
const defaultLocales: NonNullable<PlumeThemeLocaleOptions['locales']> = {
|
||||
'en-US': {
|
||||
@ -102,8 +102,9 @@ export function mergeLocaleOptions(app: App, options: PlumeThemeLocaleOptions) {
|
||||
})
|
||||
|
||||
const langs: Record<string, string> = {}
|
||||
Object.keys(app.siteData.locales || {}).forEach((locale) => {
|
||||
const lang = app.siteData.locales![locale]?.lang || 'en-US'
|
||||
const siteLocales = resolvedAppLocales(app)
|
||||
Object.keys(siteLocales).forEach((locale) => {
|
||||
const lang = siteLocales[locale]?.lang || 'en-US'
|
||||
langs[locale] = lang
|
||||
if (defaultLocales[lang]) {
|
||||
locales[locale] = deepMerge(
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import { isEmptyObject } from '@pengzhanbo/utils'
|
||||
import type { App } from '@vuepress/core'
|
||||
import type { PlumeThemeLocaleOptions } from '../shared/index.js'
|
||||
import { normalizePath } from './utils.js'
|
||||
|
||||
@ -24,3 +26,11 @@ export function resolveLocaleOptions<
|
||||
|
||||
return value ?? (fallback ? fallbackData : undefined)
|
||||
}
|
||||
|
||||
export function resolvedAppLocales(app: App): NonNullable<App['siteData']['locales']> {
|
||||
if (app.siteData.locales && !isEmptyObject(app.siteData.locales))
|
||||
return app.siteData.locales
|
||||
|
||||
const defaultLang = app.siteData.lang || 'en-US'
|
||||
return { '/': { lang: defaultLang } }
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ import type { DocsearchPluginOptions } from '@vuepress/plugin-docsearch'
|
||||
import type { SearchPluginOptions } from '@vuepress/plugin-search'
|
||||
import type { App } from '@vuepress/core'
|
||||
import { deepMerge } from '@pengzhanbo/utils'
|
||||
import { resolvedAppLocales } from './resolveLocaleOptions.js'
|
||||
|
||||
// `en-US` is used by default
|
||||
const defaultDocsearchLocales: NonNullable<DocsearchPluginOptions['locales']> = {
|
||||
@ -56,8 +57,9 @@ const defaultSearchLocales: NonNullable<SearchPluginOptions['locales']> = {
|
||||
export function resolvedDocsearchOption(app: App, options: DocsearchPluginOptions): DocsearchPluginOptions {
|
||||
options.locales ??= {}
|
||||
|
||||
Object.keys(app.siteData.locales || {}).forEach((locale) => {
|
||||
const lang = app.siteData.locales![locale]?.lang || 'en-US'
|
||||
const locales = resolvedAppLocales(app)
|
||||
Object.keys(locales).forEach((locale) => {
|
||||
const lang = locales[locale]?.lang || 'en-US'
|
||||
if (defaultDocsearchLocales[lang]) {
|
||||
options.locales![locale] = deepMerge(
|
||||
{},
|
||||
@ -72,9 +74,9 @@ export function resolvedDocsearchOption(app: App, options: DocsearchPluginOption
|
||||
|
||||
export function resolvedSearchOptions(app: App, options: SearchPluginOptions = {}): SearchPluginOptions {
|
||||
options.locales ??= {}
|
||||
|
||||
Object.keys(app.siteData.locales || {}).forEach((locale) => {
|
||||
const lang = app.siteData.locales![locale]?.lang || 'en-US'
|
||||
const locales = resolvedAppLocales(app)
|
||||
Object.keys(locales).forEach((locale) => {
|
||||
const lang = locales[locale]?.lang || 'en-US'
|
||||
if (defaultSearchLocales[lang]) {
|
||||
options.locales![locale] = deepMerge(
|
||||
{},
|
||||
|
||||
@ -7,13 +7,13 @@ import type {
|
||||
PlumeThemePageData,
|
||||
} from '../shared/index.js'
|
||||
import { pathJoin } from './utils.js'
|
||||
import { resolveLocaleOptions } from './resolveLocaleOptions.js'
|
||||
import { resolveLocaleOptions, resolvedAppLocales } from './resolveLocaleOptions.js'
|
||||
|
||||
export async function setupPage(
|
||||
app: App,
|
||||
localeOption: PlumeThemeLocaleOptions,
|
||||
) {
|
||||
const locales = app.siteData.locales || {}
|
||||
const locales = resolvedAppLocales(app)
|
||||
const defaultBlog = resolveLocaleOptions(localeOption, 'blog')
|
||||
for (const [, locale] of Object.keys(locales).entries()) {
|
||||
const blog = resolveLocaleOptions(localeOption, 'blog', locale, false)
|
||||
@ -82,7 +82,7 @@ export function autoCategory(
|
||||
const pagePath = page.filePathRelative
|
||||
if (page.frontmatter.type || !pagePath)
|
||||
return
|
||||
const locales = Object.keys(app.siteData.locales)
|
||||
const locales = Object.keys(resolvedAppLocales(app))
|
||||
const notesLinks: string[] = []
|
||||
for (const [, locale] of locales.entries()) {
|
||||
const notes = options.locales?.[locale]?.notes
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user