From a0eac82f4e4d1e7b330d353514bd8be54f9cb876 Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Wed, 5 Jun 2024 00:32:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(theme):=20=E4=BC=98=E5=8C=96=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E6=A0=87=E7=AD=BE=E9=A2=9C=E8=89=B2=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E6=89=80=E6=9C=89=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/client/blogPostData.d.ts | 3 +- .../src/client/composables/useBlogPostData.ts | 12 -- .../src/node/prepareBlogData.ts | 16 +-- plugins/plugin-blog-data/src/shared/index.ts | 4 +- theme/src/client/components/Blog/PostItem.vue | 10 +- theme/src/client/components/Blog/Tags.vue | 3 +- theme/src/client/composables/blog.ts | 14 +-- theme/src/client/composables/index.ts | 1 + theme/src/client/composables/tag-colors.ts | 16 +++ theme/src/client/shim.d.ts | 7 ++ theme/src/node/plugins/blogTags.ts | 41 ------- .../node/plugins/resolveBlogDataOptions.ts | 11 +- theme/src/node/prepare/index.ts | 20 ++++ .../node/prepare/prepareArticleTagColor.ts | 108 ++++++++++++++++++ theme/tsconfig.build.json | 2 +- 15 files changed, 169 insertions(+), 99 deletions(-) create mode 100644 theme/src/client/composables/tag-colors.ts delete mode 100644 theme/src/node/plugins/blogTags.ts create mode 100644 theme/src/node/prepare/index.ts create mode 100644 theme/src/node/prepare/prepareArticleTagColor.ts diff --git a/plugins/plugin-blog-data/src/client/blogPostData.d.ts b/plugins/plugin-blog-data/src/client/blogPostData.d.ts index abda7c79..52fa5598 100644 --- a/plugins/plugin-blog-data/src/client/blogPostData.d.ts +++ b/plugins/plugin-blog-data/src/client/blogPostData.d.ts @@ -2,7 +2,6 @@ import type { BlogPostData } from '../shared/index.js' declare module '@internal/blogData' { const blogPostData: BlogPostData - const extraBlogData: Record - export { blogPostData, extraBlogData } + export { blogPostData } } diff --git a/plugins/plugin-blog-data/src/client/composables/useBlogPostData.ts b/plugins/plugin-blog-data/src/client/composables/useBlogPostData.ts index 29df8ec3..fc2f2eae 100644 --- a/plugins/plugin-blog-data/src/client/composables/useBlogPostData.ts +++ b/plugins/plugin-blog-data/src/client/composables/useBlogPostData.ts @@ -1,6 +1,5 @@ import { blogPostData as blogPostDataRaw, - extraBlogData as extraBlogDataRaw, } from '@internal/blogData' import { ref } from 'vue' import type { Ref } from 'vue' @@ -18,19 +17,8 @@ export function useBlogPostData< return blogPostData as BlogDataRef } -export type ExtraBlogDataRef = Ref> - -export const extraBlogData: ExtraBlogDataRef = ref(extraBlogDataRaw) - -export function useExtraBlogData(): ExtraBlogDataRef { - return extraBlogData as ExtraBlogDataRef -} - if (__VUEPRESS_DEV__ && (import.meta.webpackHot || import.meta.hot)) { __VUE_HMR_RUNTIME__.updateBlogData = (data: BlogPostData) => { blogPostData.value = data } - __VUE_HMR_RUNTIME__.updateExtraBlogData = (data: Record) => { - extraBlogData.value = data - } } diff --git a/plugins/plugin-blog-data/src/node/prepareBlogData.ts b/plugins/plugin-blog-data/src/node/prepareBlogData.ts index 552851d5..f3f82188 100644 --- a/plugins/plugin-blog-data/src/node/prepareBlogData.ts +++ b/plugins/plugin-blog-data/src/node/prepareBlogData.ts @@ -9,15 +9,11 @@ if (import.meta.webpackHot) { if (__VUE_HMR_RUNTIME__.updateBlogData) { __VUE_HMR_RUNTIME__.updateBlogData(blogPostData) } - if (__VUE_HMR_RUNTIME__.updateExtraBlogData) { - __VUE_HMR_RUNTIME__.updateExtraBlogData(extraBlogData) - } } if (import.meta.hot) { - import.meta.hot.accept(({ blogPostData, extraBlogData }) => { + import.meta.hot.accept(({ blogPostData }) => { __VUE_HMR_RUNTIME__.updateBlogData(blogPostData) - __VUE_HMR_RUNTIME__.updateExtraBlogData(extraBlogData) }) } ` @@ -56,15 +52,10 @@ export async function preparedBlogData(app: App, pageFilter: (id: string) => boo }) } - const extraBlogData: Record = {} - - if (typeof options.extraBlogData === 'function') - options.extraBlogData(extraBlogData) - const blogData: BlogPostData = pages.map((page: Page) => { let extended: Partial = {} if (typeof options.extendBlogData === 'function') - extended = options.extendBlogData(page, extraBlogData) + extended = options.extendBlogData(page) const data = { path: page.path, @@ -87,9 +78,6 @@ export async function preparedBlogData(app: App, pageFilter: (id: string) => boo export const blogPostData = JSON.parse(${JSON.stringify( JSON.stringify(blogData), )}); -export const extraBlogData = JSON.parse(${JSON.stringify( - JSON.stringify(extraBlogData), -)}); ` // inject HMR code diff --git a/plugins/plugin-blog-data/src/shared/index.ts b/plugins/plugin-blog-data/src/shared/index.ts index 1ef0a0ba..86af918c 100644 --- a/plugins/plugin-blog-data/src/shared/index.ts +++ b/plugins/plugin-blog-data/src/shared/index.ts @@ -5,10 +5,8 @@ export interface BlogDataPluginOptions { exclude?: string | string[] sortBy?: 'createTime' | false | ((prev: T, next: T) => boolean) excerpt?: boolean - extendBlogData?: (page: T, extra: Record) => Record + extendBlogData?: (page: T) => Record pageFilter?: (page: Page) => boolean - - extraBlogData?: (extra: Record) => void } export type BlogPostData = BlogPostDataItem[] diff --git a/theme/src/client/components/Blog/PostItem.vue b/theme/src/client/components/Blog/PostItem.vue index 91a74734..b48b7656 100644 --- a/theme/src/client/components/Blog/PostItem.vue +++ b/theme/src/client/components/Blog/PostItem.vue @@ -1,14 +1,14 @@