diff --git a/docs/.vitepress/components.d.ts b/docs/.vitepress/components.d.ts index adbbe27..966f46b 100644 --- a/docs/.vitepress/components.d.ts +++ b/docs/.vitepress/components.d.ts @@ -1,18 +1,18 @@ /* eslint-disable */ -/* prettier-ignore */ // @ts-nocheck // Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pull/3399 export {} +/* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { - AppearanceToggle: typeof import('./theme/components/AppearanceToggle.vue')['default'] - AppFooter: typeof import('./theme/components/AppFooter.vue')['default'] - AppSBox: typeof import('./theme/components/AppSBox.vue')['default'] - ArticlesMenu: typeof import('./theme/components/ArticlesMenu.vue')['default'] - CopyrightInfo: typeof import('./theme/components/CopyrightInfo.vue')['default'] - HomeContent: typeof import('./theme/components/HomeContent.vue')['default'] - PageInfo: typeof import('./theme/components/PageInfo.vue')['default'] + AppearanceToggle: typeof import('./../../packages/vitepress-theme-project-trans/dist/components/AppearanceToggle.vue')['default'] + AppFooter: typeof import('./../../packages/vitepress-theme-project-trans/dist/components/AppFooter.vue')['default'] + AppSBox: typeof import('./../../packages/vitepress-theme-project-trans/dist/components/AppSBox.vue')['default'] + ArticlesMenu: typeof import('./../../packages/vitepress-theme-project-trans/dist/components/ArticlesMenu.vue')['default'] + CopyrightInfo: typeof import('./../../packages/vitepress-theme-project-trans/dist/components/CopyrightInfo.vue')['default'] + HomeContent: typeof import('./../../packages/vitepress-theme-project-trans/dist/components/HomeContent.vue')['default'] + PageInfo: typeof import('./../../packages/vitepress-theme-project-trans/dist/components/PageInfo.vue')['default'] } } diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 64871f3..6075ca8 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,202 +1,101 @@ -import { defineConfig } from 'vitepress' -import nav from './nav' -import mdPangu from 'markdown-it-pangu' -import katex from 'markdown-it-katex' -import footnote from 'markdown-it-footnote' -import { sidebar } from './sidebar' -import { rootDir, githubRepoLink } from './meta' -import { readFileSync, statSync } from 'node:fs' -import { join } from 'node:path' -const siteTitle = 'RLE.wiki' -const siteDescription = '一份 RLE 指北' +import genConfig from '@project-trans/vitepress-theme-project-trans/config' +import type { SidebarOptions } from '@project-trans/vitepress-theme-project-trans/theme' +import type { ThemeContext } from '@project-trans/vitepress-theme-project-trans/utils' +import { withThemeContext } from '@project-trans/vitepress-theme-project-trans/utils' +import type { DefaultTheme } from 'vitepress' + +type NavConfig = DefaultTheme.Config['nav'] + +const nav: NavConfig = [ + { + text: '大学指南', + link: '/campus/', + }, + { + text: '时尚护理', + link: '/fashion/', + }, + { + text: '安全防护', + link: '/personal-safety/', + }, + { + text: '其它', + link: '/others/', + }, + { + text: '贡献指南', + items: [ + { + text: '校园版块投稿指南', + link: '/contributor-guide/campus.md', + }, + { + text: '其他投稿指南', + link: '/contributor-guide/other.md', + }, + { + text: '校园版块贡献模板', + link: '/contributor-guide/CampusTemplate.md', + }, + ], + }, +] + +const baseConfig = { + useTitleFromFrontmatter: true, + useFolderTitleFromIndexFile: true, + useFolderLinkFromIndexFile: true, + excludeFilesByFrontmatterFieldName: true, + collapsed: true, + documentRootPath: '/docs', +} satisfies Partial + +const sidebarOptions = [ + // 大学指南 + { + ...baseConfig, + scanStartPath: 'campus', + resolvePath: '/campus/', + }, + // 贡献指南 + { + ...baseConfig, + scanStartPath: 'contributor-guide', + resolvePath: '/contributor-guide/', + }, + // 时尚护理 + { + ...baseConfig, + scanStartPath: 'fashion', + resolvePath: '/fashion/', + }, + // 安全防护 + { + ...baseConfig, + scanStartPath: 'personal-safety', + resolvePath: '/personal-safety/', + }, + // 其它 + { + ...baseConfig, + scanStartPath: 'others', + resolvePath: '/others/', + }, +] + +const themeConfig: ThemeContext = { + siteTitle: 'RLE.wiki', + siteDescription: '一份 RLE 指北', + /** Repo */ + githubRepoLink: 'https://github.com/project-trans/RLE-wiki', + /** vitepress 根目录 */ + rootDir: 'docs', + /** 文档所在目录(目前似未使用此项) */ + include: ['campus', 'contributor-guide', 'fashion'], + nav, + sidebarOptions, +} // https://vitepress.dev/reference/site-config -export default defineConfig({ - lang: 'zh-CN', - title: siteTitle, - cleanUrls: true, - markdown: { - config(md) { - md.use(mdPangu); - md.use(footnote); - md.use(katex); - }, - }, - dir: rootDir, - head: [ - ['link', { rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" }], - ['link', { rel: "icon", type: "image/png", sizes: "32x32", href: "/favicon-32x32.png" }], - ['link', { rel: "icon", type: "image/png", sizes: "16x16", href: "/favicon-16x16.png" }], - ['link', { rel: "manifest", href: "/site.webmanifest" }], - ['meta', { name: "msapplication-TileColor", content: "#4c4c4c" }], - ['meta', { name: "theme-color", content: "#ffffff" }], - ['meta', { property: 'og:site_name', content: siteTitle }], - ], - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - siteTitle: false, - logo: { - src: '/logo-horizontal.svg', - alt: 'Logo: RLE.wiki', - }, - nav, - sidebar, - socialLinks: [ - { icon: 'github', link: githubRepoLink } - ], - editLink: { - pattern: `${githubRepoLink}/edit/main/docs/:path`, - text: '在 GitHub 上编辑此页面', // label localization - }, - // label localization - outline: { label: '本页大纲', level: 'deep' }, - lastUpdated: { text: '最后更新' }, - darkModeSwitchLabel: '深色模式', - sidebarMenuLabel: '目录', - returnToTopLabel: '返回顶部', - docFooter: { - prev: '上一页', - next: '下一页', - }, - search: { - provider: 'local', - options: { - locales: { - root: { - translations: { - button: { - buttonText: '搜索文档', - buttonAriaLabel: '搜索文档', - }, - modal: { - noResultsText: '无法找到相关结果', - resetButtonTitle: '清除查询条件', - footer: { - selectText: '选择', - navigateText: '切换', - }, - }, - }, - }, - }, - // Add title field in frontmatter to search - // You can exclude a page from search by adding search: false to the page's frontmatter. - _render(src, env, md) { - if (env.frontmatter?.search === false) return '' - let html = md.render(src, env) - if (env.frontmatter?.title) - html = md.render(`# ${env.frontmatter.title}\n`) + html - return html - }, - }, - }, - }, - transformHead: (context) => { - const head = [...context.head] || [] - - const pageSourceFilePath = join(rootDir, context.pageData.filePath) - const pageSourceFileStat = statSync(join(rootDir, context.pageData.filePath)) - - if (pageSourceFileStat.isDirectory()) { - head.push([ - 'meta', - { - property: 'og:title', - content: siteTitle, - }, - ]) - - head.push([ - 'meta', - { - name: 'description', - content: siteDescription, - }, - ]) - - return head - } - - let pageSourceFileContent = readFileSync(pageSourceFilePath, { encoding: 'utf-8' }) - - // remove all frontmatter - pageSourceFileContent = pageSourceFileContent.replace(/---[\s\S]*?---/, '') - - // remove markdown heading markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/^(#+)\s+(.*)/gm, ' $2 ') - // remove markdown link markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/\[([^\]]+)\]\([^)]+\)/gm, ' $1 ') - // remove markdown image markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/\!\[([^\]]+)\]\([^)]+\)/gm, ' $1 ') - // remove markdown reference link markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/\[.*]/gm, '') - // remove markdown bold markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/\*\*([^*]+)\*\*/gm, ' $1 ') - pageSourceFileContent = pageSourceFileContent.replace(/__([^*]+)__/gm, ' $1 ') - // remove markdown italic markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/\*([^*]+)\*/gm, ' $1 ') - pageSourceFileContent = pageSourceFileContent.replace(/_([^*]+)_/gm, ' $1 ') - // remove markdown code markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/`([^`]+)`/gm, ' $1 ') - // remove markdown code block markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/```([^`]+)```/gm, ' $1 ') - // remove markdown table header markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/\|:?-+:?\|/gm, '') - // remove markdown table cell markup but keep the text content - pageSourceFileContent = pageSourceFileContent.replace(/\|([^|]+)\|/gm, ' $1 ') - - // remove specific html tags completely - const tags = [''] - tags.forEach((tag) => { - pageSourceFileContent = pageSourceFileContent.replace(new RegExp(`<${tag}[^>]*>[\\s\\S]*?<\\/${tag}>`, 'g'), '') - }) - - // remove specific html tags but keep the text content - const tagsToKeepContent = ['u', 'Containers', 'img', 'a'] - tagsToKeepContent.forEach((tag) => { - pageSourceFileContent = pageSourceFileContent.replace(new RegExp(`<${tag}[^>]*>([\\s\\S]*?)<\\/${tag}>`, 'g'), ' $1 ') - }) - - // remove all new lines (either \r, \n) - pageSourceFileContent = pageSourceFileContent.replace(/[\r|\n]/gm, '') - - // calculate the first 200 characters of the page content - let pageContent = pageSourceFileContent.slice(0, 200) - // trim space - pageContent = pageContent.trim() - // if pageSourceFileContent is longer than 200 characters, add ellipsis - if (pageSourceFileContent.length > 100) - pageContent += '...' - - if (context.pageData.frontmatter?.layout === 'home') { - pageContent = context.pageData.frontmatter?.hero?.tagline ?? siteDescription - } - - head.push([ - 'meta', - { name: 'description', content: pageContent }, - ]) - - head.push([ - 'meta', - { property: 'og:title', content: context.title }, - ]) - - head.push([ - 'meta', - { property: 'og:description', content: pageContent }, - ]) - - head.push([ - 'meta', - { property: 'og:title', content: context.title }, - ]) - - head.push([ - 'meta', - { property: 'twitter:description', content: pageContent }, - ]) - - return head - }, -}); +export default withThemeContext(themeConfig, genConfig) diff --git a/docs/.vitepress/env.d.ts b/docs/.vitepress/env.d.ts index 2a5e630..8749e75 100644 --- a/docs/.vitepress/env.d.ts +++ b/docs/.vitepress/env.d.ts @@ -1,11 +1,13 @@ declare module 'markdown-it-pangu' { - import { PluginSimple } from 'markdown-it' + import type { PluginSimple } from 'markdown-it' + const pangu: PluginSimple export default pangu } declare module 'markdown-it-katex' { - import { PluginSimple } from 'markdown-it' + import type { PluginSimple } from 'markdown-it' + const katex: PluginSimple export default katex } diff --git a/docs/.vitepress/meta.ts b/docs/.vitepress/meta.ts deleted file mode 100644 index 5da46ae..0000000 --- a/docs/.vitepress/meta.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** Repo */ -export const githubRepoLink = 'https://github.com/project-trans/RLE-wiki' -/** vitepress 根目录 */ -export const rootDir = 'docs' -/** 文档所在目录 */ -export const include = ['campus', 'contributor-guide', 'fashion'] diff --git a/docs/.vitepress/nav.ts b/docs/.vitepress/nav.ts deleted file mode 100644 index a244f71..0000000 --- a/docs/.vitepress/nav.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { DefaultTheme } from 'vitepress' - -type NavConfig = DefaultTheme.Config['nav'] - -const nav: NavConfig = [ - { - text: '大学指南', - link: '/campus/', - }, - { - text: '时尚护理', - link: '/fashion/', - }, - { - text: '安全防护', - link: '/personal-safety/', - }, - { - text: '其它', - link: '/others/', - }, - { - text: '贡献指南', - items: [ - { - text: '校园版块投稿指南', - link: '/contributor-guide/campus.md', - }, - { - text: '其他投稿指南', - link: '/contributor-guide/other.md', - }, - { - text: '校园版块贡献模板', - link: '/contributor-guide/CampusTemplate.md', - }, - ], - }, -] - -export default nav diff --git a/docs/.vitepress/plugins/CopyrightLoader.data.ts b/docs/.vitepress/plugins/CopyrightLoader.data.ts deleted file mode 100644 index 10afa6f..0000000 --- a/docs/.vitepress/plugins/CopyrightLoader.data.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ContentData, createContentLoader, defineLoader } from "vitepress"; - -let contentLoader = createContentLoader('/**/*.md') - -export interface Node { - value: T | null; - children: { [key: string]: Node }; -} - -export interface Trie { - root: Node; - insert(path: string[], value: T, node: Node): void; - insert(path: string[], value: T): void; -} - -declare const data: Trie> -export { data }; - -// noinspection JSUnusedGlobalSymbols -export default defineLoader({ - watch: contentLoader.watch, - async load(): Promise>> { - let raw: ContentData[] = await contentLoader.load() - let trie: Trie> = { - root: { value: null, children: {} }, - - insert(this: Trie>, path, value, node: Node> = this.root) { - if (path.length === 0) { - node.value = value - } else if (path.length === 1) { - if (!(path[0] in node.children)) { - node.children[path[0]] = { value: value, children: {} } - } else { - node.children[path[0]].value = value - } - } else { - if (!(path[0] in node.children)) { - let new_node = { value: null, children: {} } - this.insert(path.slice(1), value, new_node) - node.children[path[0]] = new_node - } else { - this.insert(path.slice(1), value, node.children[path[0]]) - } - } - } - } - for (let v of raw) { - let frontmatter = v.frontmatter ?? null - let copyright = frontmatter?.copyright ?? null - if (copyright !== null) { - trie.insert(v.url.split('/').filter((item, _index, _array) => item !== ''), { - author: frontmatter.author ?? null, - title: frontmatter.title ?? null, - copyright: copyright - }) - } - } - return trie; - } -}) diff --git a/docs/.vitepress/sidebar.ts b/docs/.vitepress/sidebar.ts deleted file mode 100644 index b3969d4..0000000 --- a/docs/.vitepress/sidebar.ts +++ /dev/null @@ -1,75 +0,0 @@ -import type { - SidebarItem, - SidebarMultiItem, -} from 'vitepress-sidebar' -import { generateSidebar } from 'vitepress-sidebar' -import type Options from 'vitepress-sidebar' - -export const sidebar = generate() - -function generate() { - const baseConfig = { - useTitleFromFrontmatter: true, - useFolderTitleFromIndexFile: true, - useFolderLinkFromIndexFile: true, - excludeFilesByFrontmatter: true, - collapsed: true, - } satisfies Partial - - const sidebar = generateSidebar([ - // 大学指南 - { - ...baseConfig, - documentRootPath: '/docs', - scanStartPath: 'campus', - resolvePath: '/campus/', - }, - // 贡献指南 - { - ...baseConfig, - documentRootPath: '/docs', - scanStartPath: 'contributor-guide', - resolvePath: '/contributor-guide/', - }, - // 时尚护理 - { - ...baseConfig, - documentRootPath: '/docs', - scanStartPath: 'fashion', - resolvePath: '/fashion/', - }, - // 安全防护 - { - ...baseConfig, - documentRootPath: '/docs', - scanStartPath: 'personal-safety', - resolvePath: '/personal-safety/', - }, - // 其它 - { - ...baseConfig, - documentRootPath: '/docs', - scanStartPath: 'others', - resolvePath: '/others/', - }, - ]) - - for (const key in sidebar) { - const sidebarMultiItem: SidebarMultiItem = (sidebar as any)[key] - sidebarMultiItem.items.sort(sidebarTitleSorter) - } - return sidebar -} - -function sidebarTitleSorter(infoA: SidebarItem, infoB: SidebarItem): number { - const textA = infoA.text - const textB = infoB.text - if (textA === undefined || textB === undefined) - return 0 - - const infoANfc = textA.normalize('NFC') - const infoBNfc = textB.normalize('NFC') - return infoANfc.localeCompare(infoBNfc, 'zh', { - numeric: true, - }) -} diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index 3635f30..b408a5d 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -1,63 +1,9 @@ // https://vitepress.dev/guide/custom-theme -import type { Theme } from 'vitepress' -import DefaultTheme from 'vitepress/theme' -import { h } from 'vue' - -import { - NolebaseEnhancedReadabilitiesMenu, - NolebaseEnhancedReadabilitiesPlugin, - NolebaseEnhancedReadabilitiesScreenMenu, -} from '@nolebase/vitepress-plugin-enhanced-readabilities/client' - -import { - NolebaseHighlightTargetedHeading, -} from '@nolebase/vitepress-plugin-highlight-targeted-heading/client' - -import { - NolebaseGitChangelogPlugin, -} from '@nolebase/vitepress-plugin-git-changelog/client' -import AppearanceToggle from './components/AppearanceToggle.vue' - -import '@nolebase/vitepress-plugin-enhanced-readabilities/client/style.css' -import '@nolebase/vitepress-plugin-git-changelog/client/style.css' -import '@nolebase/vitepress-plugin-highlight-targeted-heading/client/style.css' +import PtjsTheme from '@project-trans/vitepress-theme-project-trans/theme' import 'uno.css' -import AppFooter from './components/AppFooter.vue' import './style.css' export default { - extends: DefaultTheme, - Layout: () => { - return h(AppearanceToggle, null, { - default: () => h(DefaultTheme.Layout, null, { - // https://vitepress.dev/guide/extending-default-theme#layout-slots - 'doc-top': () => [ - h(NolebaseHighlightTargetedHeading), - ], - 'doc-after': () => [h(AppFooter)], - 'nav-bar-content-after': () => [ - h(NolebaseEnhancedReadabilitiesMenu), - ], - 'nav-screen-content-after': () => [ - h(NolebaseEnhancedReadabilitiesScreenMenu), - ], - }), - }) - }, - enhanceApp({ app }) { - app.use(NolebaseEnhancedReadabilitiesPlugin, { - spotlight: { - defaultToggle: true, - }, - }) - - app.use(NolebaseGitChangelogPlugin, { - locales: { - 'zh-CN': { - lastEditedDateFnsLocaleName: 'zhCN', - }, - }, - }) - }, -} satisfies Theme + extends: PtjsTheme, +} diff --git a/docs/index.md b/docs/index.md index d6cb34c..c3bc9c5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,7 +25,7 @@ hero: --- diff --git a/docs/vite.config.ts b/docs/vite.config.ts index 4cdf72b..7a853c0 100644 --- a/docs/vite.config.ts +++ b/docs/vite.config.ts @@ -1,14 +1,4 @@ -import { resolve } from 'node:path' import { defineConfig } from 'vite' -import Components from 'unplugin-vue-components/vite' -import UnoCSS from 'unocss/vite' -import { GitChangelog, GitChangelogMarkdownSection } from '@nolebase/vitepress-plugin-git-changelog/vite' -import { - MarkdownSectionWrapper, - PageHeaderTemplate, - TemplateAppSBox, - TemplateCopyrightInfo, -} from './.vitepress/plugins/MarkdownSectionWrapper' export default defineConfig({ server: { @@ -22,55 +12,4 @@ export default defineConfig({ }, }, }, - plugins: [ - MarkdownSectionWrapper( - [PageHeaderTemplate, TemplateCopyrightInfo], - [], - { - excludes: [], - exclude: (_, { helpers }): boolean => { - if (helpers.idEquals('index.md')) - return true - - return false - }, - }, - ), - GitChangelog({ - repoURL: 'https://github.com/project-trans/RLE-wiki', - maxGitLogCount: 1000, - rewritePaths: { - 'docs/': '', - }, - }), - // GitChangelogMarkdownSection({ - // sections: { - // disableChangelog: false, - // disableContributors: true, - // }, - // getChangelogTitle: (): string => { - // return '文件历史' - // }, - // excludes: [], - // exclude: (_, { helpers }): boolean => { - // if (helpers.idEquals('index.md')) - // return true - - // return false - // }, - // }), - Components({ - dirs: resolve(__dirname, '.vitepress/theme/components'), - include: [/\.vue$/, /\.vue\?vue/, /\.md$/], - dts: './.vitepress/components.d.ts', - transformer: 'vue3', - }), - UnoCSS(), - ], - ssr: { - noExternal: [ - '@nolebase/vitepress-plugin-enhanced-readabilities', - '@nolebase/vitepress-plugin-highlight-targeted-heading', - ], - }, }) diff --git a/package.json b/package.json index b03df33..202572f 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "rle-wiki", "type": "module", "version": "1.0.0", + "packageManager": "pnpm@9.2.0", "description": "RLE 指北", "license": "CC-BY-SA-4.0", "scripts": { @@ -9,33 +10,29 @@ "dev:wrangler": "wrangler pages dev ./docs/.vitepress/dist/", "build": "vitepress build docs", "preview": "vitepress preview docs", - "update-package": "pnpm dlx vp-update" + "update-package": "pnpm dlx vp-update", + "postinstall": "pnpm --filter @project-trans/* build" }, "devDependencies": { - "@antfu/eslint-config": "^2.13.3", - "@cloudflare/workers-types": "^4.20240405.0", - "@iconify-json/octicon": "^1.1.53", - "@nolebase/vitepress-plugin-enhanced-readabilities": "2.0.0-rc3", - "@nolebase/vitepress-plugin-git-changelog": "2.0.0-rc3", - "@nolebase/vitepress-plugin-highlight-targeted-heading": "2.0.0-rc3", + "@antfu/eslint-config": "^2.21.1", + "@cloudflare/workers-types": "^4.20240620.0", + "@iconify-json/octicon": "^1.1.55", "@project-trans/suggestion-box": "^0.0.9", - "@types/markdown-it": "^13.0.7", + "@project-trans/vitepress-theme-project-trans": "workspace:*", + "@types/markdown-it": "^13.0.8", "@types/markdown-it-footnote": "^3.0.4", - "@unocss/eslint-plugin": "^0.59.0", + "@unocss/eslint-plugin": "^0.59.4", "eslint": "^8.57.0", - "eslint-plugin-format": "^0.1.0", - "markdown-it-footnote": "^3.0.3", - "markdown-it-katex": "^2.0.3", - "markdown-it-pangu": "^1.0.2", - "md5": "^2.3.0", - "simple-git": "^3.24.0", + "eslint-plugin-format": "^0.1.2", + "simple-git": "^3.25.0", + "unbuild": "^2.0.0", "unocss": "^0.58.9", "unplugin-vue-components": "^0.26.0", - "vite": "^5.2.8", - "vitepress": "1.0.0-rc.42", - "vitepress-sidebar": "^1.22.0", - "vue": "^3.4.21", - "wrangler": "^3.49.0" + "vite": "^5.3.1", + "vitepress": "^1.2.3", + "vitepress-sidebar": "^1.23.2", + "vue": "^3.4.30", + "wrangler": "^3.61.0" }, "pnpm": { "overrides": { diff --git a/packages/vitepress-theme-project-trans/build.config.ts b/packages/vitepress-theme-project-trans/build.config.ts new file mode 100644 index 0000000..80533df --- /dev/null +++ b/packages/vitepress-theme-project-trans/build.config.ts @@ -0,0 +1,33 @@ +import { defineBuildConfig } from 'unbuild' + +export default defineBuildConfig({ + entries: [ + { + builder: 'mkdist', + input: './src', + outDir: './dist', + pattern: ['**/*.ts'], + format: 'esm', + loaders: ['js'], + }, + { + builder: 'mkdist', + input: './src', + outDir: './dist', + pattern: ['**/*.ts'], + format: 'cjs', + loaders: ['js'], + }, + { + builder: 'mkdist', + input: './src', + outDir: './dist', + pattern: ['**/*.vue'], + loaders: ['vue'], + }, + ], + declaration: true, + clean: true, + sourcemap: true, + rollup: { emitCJS: true }, +}) diff --git a/packages/vitepress-theme-project-trans/package.json b/packages/vitepress-theme-project-trans/package.json new file mode 100644 index 0000000..61e0296 --- /dev/null +++ b/packages/vitepress-theme-project-trans/package.json @@ -0,0 +1,67 @@ +{ + "name": "@project-trans/vitepress-theme-project-trans", + "type": "module", + "version": "1.0.0", + "description": "RLE 指北", + "license": "MIT", + "exports": { + "./config": { + "types": "./dist/config.d.ts", + "import": "./dist/config.mjs", + "require": "./dist/config.js" + }, + "./utils": { + "types": "./dist/utils/index.d.ts", + "import": "./dist/utils/index.mjs", + "require": "./dist/utils/index.js" + }, + "./theme": { + "types": "./dist/theme.d.ts", + "import": "./dist/theme.mjs", + "require": "./dist/theme.js" + }, + "./plugins/MarkdownSectionWrapper": { + "types": "./dist/plugins/MarkdownSectionWrapper.d.ts", + "import": "./dist/plugins/MarkdownSectionWrapper.mjs", + "require": "./dist/plugins/MarkdownSectionWrapper.js" + }, + "./components/*": "./dist/components/*" + }, + "main": "./dist/config.js", + "module": "./dist/config.mjs", + "types": "./dist/config.d.ts", + "scripts": { + "build": "unbuild", + "dev": "vitepress dev", + "dev:wrangler": "wrangler pages dev ./dist/", + "preview": "vitepress preview", + "update-package": "pnpm dlx vp-update" + }, + "devDependencies": { + "@antfu/eslint-config": "^2.21.1", + "@cloudflare/workers-types": "^4.20240620.0", + "@iconify-json/octicon": "^1.1.55", + "@nolebase/vitepress-plugin-enhanced-readabilities": "2.1.2", + "@nolebase/vitepress-plugin-git-changelog": "2.1.2", + "@nolebase/vitepress-plugin-highlight-targeted-heading": "2.1.2", + "@project-trans/suggestion-box": "^0.0.9", + "@types/markdown-it": "^14.1.1", + "@types/markdown-it-footnote": "^3.0.4", + "@types/node": "^20.14.8", + "@unocss/eslint-plugin": "^0.61.0", + "eslint": "^8.57.0", + "eslint-plugin-format": "^0.1.2", + "markdown-it-footnote": "^4.0.0", + "markdown-it-katex": "^2.0.3", + "markdown-it-pangu": "^1.0.2", + "md5": "^2.3.0", + "simple-git": "^3.25.0", + "unocss": "^0.61.0", + "unplugin-vue-components": "^0.27.0", + "vite": "^5.3.1", + "vitepress": "^1.2.3", + "vitepress-sidebar": "^1.23.2", + "vue": "^3.4.30", + "wrangler": "^3.61.0" + } +} diff --git a/docs/.vitepress/theme/components/AppFooter.vue b/packages/vitepress-theme-project-trans/src/components/AppFooter.vue similarity index 83% rename from docs/.vitepress/theme/components/AppFooter.vue rename to packages/vitepress-theme-project-trans/src/components/AppFooter.vue index cbb8f07..3ce5087 100644 --- a/docs/.vitepress/theme/components/AppFooter.vue +++ b/packages/vitepress-theme-project-trans/src/components/AppFooter.vue @@ -8,9 +8,6 @@ import { NolebaseGitChangelog } from '@nolebase/vitepress-plugin-git-changelog/c 意见反馈 -

- 文件历史 -

diff --git a/docs/.vitepress/theme/components/AppSBox.vue b/packages/vitepress-theme-project-trans/src/components/AppSBox.vue similarity index 84% rename from docs/.vitepress/theme/components/AppSBox.vue rename to packages/vitepress-theme-project-trans/src/components/AppSBox.vue index dbb86a9..0c2f4e3 100644 --- a/docs/.vitepress/theme/components/AppSBox.vue +++ b/packages/vitepress-theme-project-trans/src/components/AppSBox.vue @@ -1,11 +1,11 @@ + + - - diff --git a/docs/.vitepress/theme/components/AppearanceToggle.vue b/packages/vitepress-theme-project-trans/src/components/AppearanceToggle.vue similarity index 80% rename from docs/.vitepress/theme/components/AppearanceToggle.vue rename to packages/vitepress-theme-project-trans/src/components/AppearanceToggle.vue index d7eccd2..69b0928 100644 --- a/docs/.vitepress/theme/components/AppearanceToggle.vue +++ b/packages/vitepress-theme-project-trans/src/components/AppearanceToggle.vue @@ -1,16 +1,17 @@ - diff --git a/docs/.vitepress/theme/components/ArticlesMenu.vue b/packages/vitepress-theme-project-trans/src/components/ArticlesMenu.vue similarity index 100% rename from docs/.vitepress/theme/components/ArticlesMenu.vue rename to packages/vitepress-theme-project-trans/src/components/ArticlesMenu.vue diff --git a/docs/.vitepress/theme/components/CopyrightInfo.vue b/packages/vitepress-theme-project-trans/src/components/CopyrightInfo.vue similarity index 60% rename from docs/.vitepress/theme/components/CopyrightInfo.vue rename to packages/vitepress-theme-project-trans/src/components/CopyrightInfo.vue index d9447fd..aae3ec9 100644 --- a/docs/.vitepress/theme/components/CopyrightInfo.vue +++ b/packages/vitepress-theme-project-trans/src/components/CopyrightInfo.vue @@ -1,48 +1,51 @@ diff --git a/docs/.vitepress/theme/components/HomeContent.vue b/packages/vitepress-theme-project-trans/src/components/HomeContent.vue similarity index 100% rename from docs/.vitepress/theme/components/HomeContent.vue rename to packages/vitepress-theme-project-trans/src/components/HomeContent.vue diff --git a/docs/.vitepress/theme/components/PageInfo.vue b/packages/vitepress-theme-project-trans/src/components/PageInfo.vue similarity index 82% rename from docs/.vitepress/theme/components/PageInfo.vue rename to packages/vitepress-theme-project-trans/src/components/PageInfo.vue index cec86f1..3de8d66 100644 --- a/docs/.vitepress/theme/components/PageInfo.vue +++ b/packages/vitepress-theme-project-trans/src/components/PageInfo.vue @@ -1,11 +1,11 @@