From 24c8a6a737827386ff2464bf8186ca4dffb77159 Mon Sep 17 00:00:00 2001 From: Neko Ayaka Date: Sat, 16 Dec 2023 17:28:43 +0800 Subject: [PATCH] chore: added plugins, assigning proper language for SEO and i18n (#230) --- docs/.vitepress/config.ts | 9 ++++----- docs/.vitepress/nav.ts | 7 +++++-- docs/.vitepress/theme/index.ts | 27 +++++++++++++++++++++++++-- docs/vite.config.ts | 7 ++++++- package.json | 2 ++ pnpm-lock.yaml | 24 ++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 10 deletions(-) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 662f19c..686668e 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,15 +1,15 @@ -import { defineConfig, type DefaultTheme } from 'vitepress' +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 { generateSidebar } from 'vitepress-sidebar' import { sidebar } from './sidebar' // https://vitepress.dev/reference/site-config export default defineConfig({ + lang: 'zh-CN', title: "RLE.wiki", - description: "一份RLE指北", + description: "一份 RLE 指北", markdown: { config(md) { md.use(mdPangu); @@ -18,7 +18,6 @@ export default defineConfig({ }, }, dir: 'docs', - lastUpdated: true, themeConfig: { // https://vitepress.dev/reference/default-theme-config siteTitle: 'RLE.wiki', @@ -35,7 +34,7 @@ export default defineConfig({ }, // label localization - outline: { label: '本页大纲' }, + outline: { label: '本页大纲', level: 'deep' }, lastUpdated: { text: '最后更新' }, darkModeSwitchLabel: '深色模式', sidebarMenuLabel: '目录', diff --git a/docs/.vitepress/nav.ts b/docs/.vitepress/nav.ts index 2d63871..34007ba 100644 --- a/docs/.vitepress/nav.ts +++ b/docs/.vitepress/nav.ts @@ -1,6 +1,8 @@ import { type DefaultTheme } from 'vitepress' -const nav = [ +type NavConfig = DefaultTheme.Config['nav'] + +const nav: NavConfig = [ { text: "大学指南", link: "/campus/", @@ -22,5 +24,6 @@ const nav = [ link: "/contributor-guide/CampusTemplate.md", }], }, -] satisfies DefaultTheme.Config['nav']; +]; + export default nav; diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index 2146cbf..3332f5b 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -2,6 +2,20 @@ import { h } from 'vue' import type { Theme } from 'vitepress' import DefaultTheme from 'vitepress/theme' + +import { + NolebaseEnhancedReadabilitiesPlugin, + NolebaseEnhancedReadabilitiesMenu, + NolebaseEnhancedReadabilitiesScreenMenu +} from '@nolebase/vitepress-plugin-enhanced-readabilities' + +import { + NolebaseHighlightTargetedHeading, +} from '@nolebase/vitepress-plugin-highlight-targeted-heading' + +import '@nolebase/vitepress-plugin-enhanced-readabilities/dist/style.css' +import '@nolebase/vitepress-plugin-highlight-targeted-heading/dist/style.css' + import './style.css' import 'uno.css' @@ -10,9 +24,18 @@ export default { Layout: () => { return h(DefaultTheme.Layout, null, { // https://vitepress.dev/guide/extending-default-theme#layout-slots + 'doc-top': () => [ + h(NolebaseHighlightTargetedHeading), + ], + 'nav-bar-content-after': () => [ + h(NolebaseEnhancedReadabilitiesMenu), + ], + 'nav-screen-content-after': () => [ + h(NolebaseEnhancedReadabilitiesScreenMenu), + ], }) }, - enhanceApp({ app, router, siteData }) { - // ... + enhanceApp({ app }) { + app.use(NolebaseEnhancedReadabilitiesPlugin) } } satisfies Theme diff --git a/docs/vite.config.ts b/docs/vite.config.ts index aeba24d..e527ea0 100644 --- a/docs/vite.config.ts +++ b/docs/vite.config.ts @@ -13,7 +13,12 @@ export default defineConfig({ 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 c110976..35f00ae 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ }, "devDependencies": { "@iconify-json/octicon": "^1.1.51", + "@nolebase/vitepress-plugin-enhanced-readabilities": "^1.7.3", + "@nolebase/vitepress-plugin-highlight-targeted-heading": "^1.4.0", "@types/markdown-it": "^13.0.7", "@types/markdown-it-footnote": "^3.0.3", "markdown-it-footnote": "^3.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93489f8..b7ed3b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,12 @@ devDependencies: '@iconify-json/octicon': specifier: ^1.1.51 version: 1.1.51 + '@nolebase/vitepress-plugin-enhanced-readabilities': + specifier: ^1.7.3 + version: 1.7.3(vitepress@1.0.0-rc.31)(vue@3.3.8) + '@nolebase/vitepress-plugin-highlight-targeted-heading': + specifier: ^1.4.0 + version: 1.4.0(vue@3.3.8) '@types/markdown-it': specifier: ^13.0.7 version: 13.0.7 @@ -2160,6 +2166,24 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@nolebase/vitepress-plugin-enhanced-readabilities@1.7.3(vitepress@1.0.0-rc.31)(vue@3.3.8): + resolution: {integrity: sha512-Xob5e5AEcN/Ieakk1yiSSYbT/aw/YebCY0J4s4FLkbzdhuIJr0wVaNm1dIVAjEqS5BtkZkRSzfi9sEWfgpnP1w==} + peerDependencies: + vitepress: '>=1.0.0-rc.31' + vue: '>=3.3.8' + dependencies: + vitepress: 1.0.0-rc.31(@algolia/client-search@4.20.0)(postcss@8.4.32)(search-insights@2.11.0) + vue: 3.3.8 + dev: true + + /@nolebase/vitepress-plugin-highlight-targeted-heading@1.4.0(vue@3.3.8): + resolution: {integrity: sha512-SSCORdPwugEwVpov7eaap7KtW0y9kn2UbQM1n4C4/bgQ71Ayelawoee1MpHSyBxk96rynG5ubo6Q6NPgDK1sjg==} + peerDependencies: + vue: '>=3.3.8' + dependencies: + vue: 3.3.8 + dev: true + /@polka/url@1.0.0-next.24: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: true