From b80cfe4cb5a211d81876e349fb6c6f134cbadbd9 Mon Sep 17 00:00:00 2001 From: BeiyanYunyi <14120445+BeiyanYunyi@users.noreply.github.com> Date: Wed, 18 Sep 2024 10:32:34 +0800 Subject: [PATCH] chore(theme): :art: change components definition --- docs/index.md | 2 +- .../package.json | 6 ++- .../src/components.ts | 19 +++++++++ .../src/components/index.ts | 20 --------- .../src/config.ts | 42 +++++++++---------- 5 files changed, 46 insertions(+), 43 deletions(-) create mode 100644 packages/vitepress-theme-project-trans/src/components.ts delete mode 100644 packages/vitepress-theme-project-trans/src/components/index.ts diff --git a/docs/index.md b/docs/index.md index c3bc9c5..88a3fd8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,7 +25,7 @@ hero: --- diff --git a/packages/vitepress-theme-project-trans/package.json b/packages/vitepress-theme-project-trans/package.json index 5efce20..e898a1e 100644 --- a/packages/vitepress-theme-project-trans/package.json +++ b/packages/vitepress-theme-project-trans/package.json @@ -25,7 +25,11 @@ "import": "./dist/plugins/MarkdownSectionWrapper.mjs", "require": "./dist/plugins/MarkdownSectionWrapper.js" }, - "./components/*": "./dist/components/*" + "./components": { + "types": "./dist/components.d.ts", + "import": "./dist/components.mjs", + "require": "./dist/components.js" + } }, "main": "./dist/config.js", "module": "./dist/config.mjs", diff --git a/packages/vitepress-theme-project-trans/src/components.ts b/packages/vitepress-theme-project-trans/src/components.ts new file mode 100644 index 0000000..925a302 --- /dev/null +++ b/packages/vitepress-theme-project-trans/src/components.ts @@ -0,0 +1,19 @@ +import AppearanceToggle from './components/AppearanceToggle.vue' +import AppFooter from './components/AppFooter.vue' +import AppSBox from './components/AppSBox.vue' +import ArticlesMenu from './components/ArticlesMenu.vue' +import CopyrightInfo from './components/CopyrightInfo.vue' +import HomeContent from './components/HomeContent.vue' +import PageInfo from './components/PageInfo.vue' +import ReadingTime from './components/ReadingTime.vue' + +export { + AppFooter, + AppSBox, + AppearanceToggle, + ArticlesMenu, + CopyrightInfo, + HomeContent, + PageInfo, + ReadingTime, +} diff --git a/packages/vitepress-theme-project-trans/src/components/index.ts b/packages/vitepress-theme-project-trans/src/components/index.ts deleted file mode 100644 index 1a239fc..0000000 --- a/packages/vitepress-theme-project-trans/src/components/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import AppearanceToggle from './AppearanceToggle.vue' -import AppFooter from './AppFooter.vue' -import AppSBox from './AppSBox.vue' -import ArticlesMenu from './ArticlesMenu.vue' -import CopyrightInfo from './CopyrightInfo.vue' -import HomeContent from './HomeContent.vue' -import PageInfo from './PageInfo.vue' -import ReadingTime from './ReadingTime.vue' - - -export { - AppearanceToggle, - AppFooter, - AppSBox, - ArticlesMenu, - CopyrightInfo, - HomeContent, - PageInfo, - ReadingTime -} diff --git a/packages/vitepress-theme-project-trans/src/config.ts b/packages/vitepress-theme-project-trans/src/config.ts index b21fd61..0866aa7 100644 --- a/packages/vitepress-theme-project-trans/src/config.ts +++ b/packages/vitepress-theme-project-trans/src/config.ts @@ -1,6 +1,8 @@ -import { readFileSync, statSync } from 'node:fs' -import { dirname, join, resolve } from 'node:path' +import fs from 'node:fs' +import path, { dirname, resolve } from 'node:path' +import process from 'node:process' import { fileURLToPath } from 'node:url' + import { GitChangelog } from '@nolebase/vitepress-plugin-git-changelog/vite' import { transformHeadMeta } from '@nolebase/vitepress-plugin-meta' import { @@ -14,18 +16,16 @@ import mdPangu from 'markdown-it-pangu' import UnoCSS from 'unocss/vite' import Components from 'unplugin-vue-components/vite' import { defineConfig } from 'vitepress' + import { generateSidebar } from './sidebar' import { useThemeContext } from './utils/themeContext' -import fs from 'fs'; -import path from 'path'; - // 从文件系统读取 Markdown 文件内容 function readMarkdownFileContent(filePath: string): string { if (fs.existsSync(filePath)) { - return fs.readFileSync(filePath, 'utf-8'); + return fs.readFileSync(filePath, 'utf-8') } - return ''; + return '' } // 统计文档的字数函数 @@ -34,15 +34,15 @@ function countWords(content: string): number { .replace(/```[\s\S]*?```/g, '') // 移除代码块 .replace(/!\[.*?\]\(.*?\)/g, '') // 移除图片链接 .replace(/\[.*?\]\(.*?\)/g, '') // 移除普通链接 - .replace(/<\/?[^>]+(>|$)/g, '') // 移除 HTML 标签 - .replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, '') // 移除标点符号 + .replace(/<[^>]+(>|$)/g, '') // 移除 HTML 标签 + .replace(/[.,/#!$%^&*;:{}=\-_`~()]/g, '') // 移除标点符号 .replace(/\s+/g, ' ') // 将多余的空格归为一个空格 - .trim(); // 去除首尾空格 + .trim() // 去除首尾空格 - const chineseCharacters = cleanedContent.match(/[\u4e00-\u9fff\uff01-\uffe5]/g) || []; - const words = cleanedContent.split(/\s+/).filter(Boolean); + const chineseCharacters = cleanedContent.match(/[\u4E00-\u9FFF\uFF01-\uFFE5]/g) || [] + const words = cleanedContent.split(/\s+/).filter(Boolean) - return chineseCharacters.length + words.length; + return chineseCharacters.length + words.length } // https://vitepress.dev/reference/site-config @@ -139,7 +139,7 @@ function genConfig() { navigateUpKeyAriaLabel: '上箭头', navigateDownKeyAriaLabel: '下箭头', selectKeyAriaLabel: '回车', - closeKeyAriaLabel: '退出' + closeKeyAriaLabel: '退出', }, }, }, @@ -226,23 +226,23 @@ function genConfig() { }, transformPageData(pageData) { // 构建 Markdown 文件路径 - const markdownFile = `${pageData.relativePath}`; - const filePath = path.join(process.cwd(), 'docs', markdownFile); + const markdownFile = `${pageData.relativePath}` + const filePath = path.join(process.cwd(), 'docs', markdownFile) // 从文件系统读取文件内容 - const content = readMarkdownFileContent(filePath); + const content = readMarkdownFileContent(filePath) // 统计字数并插入到 Frontmatter - const wordCount = countWords(content); + const wordCount = countWords(content) return { frontmatter: { ...pageData.frontmatter, wordCount, // 将字数写入 Frontmatter }, - }; + } }, - }); + }) } -export default genConfig; +export default genConfig