From ceb049cac6dae3a94736c39e6d49700017faa228 Mon Sep 17 00:00:00 2001 From: "Mr.Hope" Date: Tue, 30 Jan 2024 17:08:43 +0800 Subject: [PATCH] docs: add ecosystem docs (close #36) (#38) --- .github/workflows/check.yml | 13 +- .github/workflows/docs.yml | 44 ++ .github/workflows/release.yml | 36 + docs/.vuepress/components/NpmBadge.vue | 49 ++ docs/.vuepress/config.ts | 131 ++++ docs/.vuepress/configs/head.ts | 40 + docs/.vuepress/configs/index.ts | 3 + docs/.vuepress/configs/navbar/en.ts | 52 ++ docs/.vuepress/configs/navbar/index.ts | 2 + docs/.vuepress/configs/navbar/zh.ts | 52 ++ docs/.vuepress/configs/sidebar/en.ts | 54 ++ docs/.vuepress/configs/sidebar/index.ts | 2 + docs/.vuepress/configs/sidebar/zh.ts | 54 ++ docs/.vuepress/public/favicon.ico | Bin 0 -> 15086 bytes .../images/cookbook/extending-a-theme-01.png | Bin 0 -> 13453 bytes docs/.vuepress/public/images/hero.png | Bin 0 -> 153793 bytes .../images/icons/android-chrome-192x192.png | Bin 0 -> 6839 bytes .../images/icons/android-chrome-384x384.png | Bin 0 -> 15528 bytes .../public/images/icons/apple-touch-icon.png | Bin 0 -> 5373 bytes .../public/images/icons/favicon-16x16.png | Bin 0 -> 806 bytes .../public/images/icons/favicon-32x32.png | Bin 0 -> 1295 bytes .../public/images/icons/mstile-150x150.png | Bin 0 -> 4676 bytes .../public/images/icons/safari-pinned-tab.svg | 23 + docs/.vuepress/public/images/logo.png | Bin 0 -> 3451 bytes docs/.vuepress/public/manifest.webmanifest | 21 + docs/.vuepress/theme.ts | 68 ++ docs/README.md | 15 + docs/package.json | 30 + docs/plugins/active-header-links.md | 74 ++ docs/plugins/back-to-top.md | 27 + docs/plugins/container.md | 165 ++++ docs/plugins/docsearch.md | 411 ++++++++++ docs/plugins/external-link-icon.md | 87 +++ docs/plugins/git.md | 145 ++++ docs/plugins/google-analytics.md | 78 ++ docs/plugins/medium-zoom.md | 100 +++ docs/plugins/nprogress.md | 35 + docs/plugins/palette.md | 203 +++++ docs/plugins/prismjs.md | 43 + docs/plugins/pwa-popup.md | 72 ++ docs/plugins/pwa.md | 173 +++++ docs/plugins/register-components.md | 135 ++++ docs/plugins/search.md | 166 ++++ docs/plugins/shiki.md | 75 ++ docs/plugins/theme-data.md | 118 +++ docs/plugins/toc.md | 172 ++++ docs/themes/default/README.md | 19 + docs/themes/default/components.md | 126 +++ docs/themes/default/config.md | 734 ++++++++++++++++++ docs/themes/default/extending.md | 118 +++ docs/themes/default/frontmatter.md | 360 +++++++++ docs/themes/default/markdown.md | 141 ++++ docs/themes/default/styles.md | 40 + docs/zh/README.md | 15 + docs/zh/plugins/active-header-links.md | 74 ++ docs/zh/plugins/back-to-top.md | 27 + docs/zh/plugins/container.md | 165 ++++ docs/zh/plugins/docsearch.md | 410 ++++++++++ docs/zh/plugins/external-link-icon.md | 87 +++ docs/zh/plugins/git.md | 145 ++++ docs/zh/plugins/google-analytics.md | 78 ++ docs/zh/plugins/medium-zoom.md | 100 +++ docs/zh/plugins/nprogress.md | 35 + docs/zh/plugins/palette.md | 203 +++++ docs/zh/plugins/prismjs.md | 43 + docs/zh/plugins/pwa-popup.md | 72 ++ docs/zh/plugins/pwa.md | 173 +++++ docs/zh/plugins/register-components.md | 135 ++++ docs/zh/plugins/search.md | 166 ++++ docs/zh/plugins/shiki.md | 75 ++ docs/zh/plugins/theme-data.md | 118 +++ docs/zh/plugins/toc.md | 172 ++++ docs/zh/themes/default/README.md | 21 + docs/zh/themes/default/components.md | 126 +++ docs/zh/themes/default/config.md | 734 ++++++++++++++++++ docs/zh/themes/default/extending.md | 117 +++ docs/zh/themes/default/frontmatter.md | 360 +++++++++ docs/zh/themes/default/markdown.md | 141 ++++ docs/zh/themes/default/styles.md | 39 + pnpm-lock.yaml | 220 +++--- pnpm-workspace.yaml | 3 +- 81 files changed, 8463 insertions(+), 97 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 docs/.vuepress/components/NpmBadge.vue create mode 100644 docs/.vuepress/config.ts create mode 100644 docs/.vuepress/configs/head.ts create mode 100644 docs/.vuepress/configs/index.ts create mode 100644 docs/.vuepress/configs/navbar/en.ts create mode 100644 docs/.vuepress/configs/navbar/index.ts create mode 100644 docs/.vuepress/configs/navbar/zh.ts create mode 100644 docs/.vuepress/configs/sidebar/en.ts create mode 100644 docs/.vuepress/configs/sidebar/index.ts create mode 100644 docs/.vuepress/configs/sidebar/zh.ts create mode 100644 docs/.vuepress/public/favicon.ico create mode 100644 docs/.vuepress/public/images/cookbook/extending-a-theme-01.png create mode 100644 docs/.vuepress/public/images/hero.png create mode 100644 docs/.vuepress/public/images/icons/android-chrome-192x192.png create mode 100644 docs/.vuepress/public/images/icons/android-chrome-384x384.png create mode 100644 docs/.vuepress/public/images/icons/apple-touch-icon.png create mode 100644 docs/.vuepress/public/images/icons/favicon-16x16.png create mode 100644 docs/.vuepress/public/images/icons/favicon-32x32.png create mode 100644 docs/.vuepress/public/images/icons/mstile-150x150.png create mode 100644 docs/.vuepress/public/images/icons/safari-pinned-tab.svg create mode 100644 docs/.vuepress/public/images/logo.png create mode 100644 docs/.vuepress/public/manifest.webmanifest create mode 100644 docs/.vuepress/theme.ts create mode 100644 docs/README.md create mode 100644 docs/package.json create mode 100644 docs/plugins/active-header-links.md create mode 100644 docs/plugins/back-to-top.md create mode 100644 docs/plugins/container.md create mode 100644 docs/plugins/docsearch.md create mode 100644 docs/plugins/external-link-icon.md create mode 100644 docs/plugins/git.md create mode 100644 docs/plugins/google-analytics.md create mode 100644 docs/plugins/medium-zoom.md create mode 100644 docs/plugins/nprogress.md create mode 100644 docs/plugins/palette.md create mode 100644 docs/plugins/prismjs.md create mode 100644 docs/plugins/pwa-popup.md create mode 100644 docs/plugins/pwa.md create mode 100644 docs/plugins/register-components.md create mode 100644 docs/plugins/search.md create mode 100644 docs/plugins/shiki.md create mode 100644 docs/plugins/theme-data.md create mode 100644 docs/plugins/toc.md create mode 100644 docs/themes/default/README.md create mode 100644 docs/themes/default/components.md create mode 100644 docs/themes/default/config.md create mode 100644 docs/themes/default/extending.md create mode 100644 docs/themes/default/frontmatter.md create mode 100644 docs/themes/default/markdown.md create mode 100644 docs/themes/default/styles.md create mode 100644 docs/zh/README.md create mode 100644 docs/zh/plugins/active-header-links.md create mode 100644 docs/zh/plugins/back-to-top.md create mode 100644 docs/zh/plugins/container.md create mode 100644 docs/zh/plugins/docsearch.md create mode 100644 docs/zh/plugins/external-link-icon.md create mode 100644 docs/zh/plugins/git.md create mode 100644 docs/zh/plugins/google-analytics.md create mode 100644 docs/zh/plugins/medium-zoom.md create mode 100644 docs/zh/plugins/nprogress.md create mode 100644 docs/zh/plugins/palette.md create mode 100644 docs/zh/plugins/prismjs.md create mode 100644 docs/zh/plugins/pwa-popup.md create mode 100644 docs/zh/plugins/pwa.md create mode 100644 docs/zh/plugins/register-components.md create mode 100644 docs/zh/plugins/search.md create mode 100644 docs/zh/plugins/shiki.md create mode 100644 docs/zh/plugins/theme-data.md create mode 100644 docs/zh/plugins/toc.md create mode 100644 docs/zh/themes/default/README.md create mode 100644 docs/zh/themes/default/components.md create mode 100644 docs/zh/themes/default/config.md create mode 100644 docs/zh/themes/default/extending.md create mode 100644 docs/zh/themes/default/frontmatter.md create mode 100644 docs/zh/themes/default/markdown.md create mode 100644 docs/zh/themes/default/styles.md diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index b02838e5c6..0021518955 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -11,13 +11,7 @@ on: jobs: check: - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest, macos-latest] - node: ['18', '20'] - - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -40,6 +34,11 @@ jobs: - name: Linter Test run: pnpm lint + - name: Docs Test + run: | + pnpm --filter @vuepress/ecosystem-docs docs:build + pnpm --filter @vuepress/ecosystem-docs docs:build-webpack + - name: Unit Test run: pnpm test:unit diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000000..823eb47aae --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,44 @@ +name: Deploy Ecosystem Docs + +on: + push: + branches: + - main + +jobs: + deploy-github-docs: + name: Deploy ecosystem docs to Github Pages + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install pnpm + uses: pnpm/action-setup@v2 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: Install deps + run: pnpm install --frozen-lockfile + + - name: Build Project + run: pnpm build + + - name: Docs build + env: + BASE: /ecosystem/ + NODE_OPTIONS: --max_old_space_size=8192 + run: pnpm --filter @vuepress/ecosystem-docs docs:build + + - name: Deploy docs + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: docs/.vuepress/dist + single-commit: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0574a9b72..4c6e450fbe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,3 +25,39 @@ jobs: tag_name: ${{ github.ref }} body: | Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) for details. + + deploy-docs: + name: Deploy ecosystem docs to Netlify + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install pnpm + uses: pnpm/action-setup@v2 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: Install deps + run: pnpm install --frozen-lockfile + + - name: Build Project + run: pnpm build + + - name: Docs build + env: + NODE_OPTIONS: --max_old_space_size=8192 + run: pnpm --filter @vuepress/ecosystem-docs docs:build + + - name: Deploy docs + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: netlify + folder: docs/.vuepress/dist + single-commit: true diff --git a/docs/.vuepress/components/NpmBadge.vue b/docs/.vuepress/components/NpmBadge.vue new file mode 100644 index 0000000000..c9ff7be250 --- /dev/null +++ b/docs/.vuepress/components/NpmBadge.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts new file mode 100644 index 0000000000..1a7b841c47 --- /dev/null +++ b/docs/.vuepress/config.ts @@ -0,0 +1,131 @@ +import { createRequire } from 'node:module' +import process from 'node:process' +import { viteBundler } from '@vuepress/bundler-vite' +import { webpackBundler } from '@vuepress/bundler-webpack' +// import { docsearchPlugin } from '@vuepress/plugin-docsearch' +import { registerComponentsPlugin } from '@vuepress/plugin-register-components' +import { shikiPlugin } from '@vuepress/plugin-shiki' +import { defineUserConfig } from 'vuepress' +import type { UserConfig } from 'vuepress' +import { getDirname, path } from 'vuepress/utils' +import { head } from './configs/index.js' +import theme from './theme.js' + +const __dirname = getDirname(import.meta.url) +const require = createRequire(import.meta.url) + +const isProd = process.env.NODE_ENV === 'production' + +export default defineUserConfig({ + // set site base to default value + base: (process.env.BASE as `/${string}/` | '/') || '/', + + // extra tags in `` + head, + + // site-level locales config + locales: { + '/': { + lang: 'en-US', + title: 'VuePress Ecosystem', + description: 'VuePress official themes plugins', + }, + '/zh/': { + lang: 'zh-CN', + title: 'VuePress 生态系统', + description: 'VuePress 官方主题和插件', + }, + }, + + // specify bundler via environment variable + bundler: + process.env.DOCS_BUNDLER === 'webpack' ? webpackBundler() : viteBundler(), + + // configure markdown + markdown: { + importCode: { + handleImportPath: (importPath) => { + // handle @vuepress packages import path + if (importPath.startsWith('@vuepress/')) { + const packageName = importPath.match(/^(@vuepress\/[^/]*)/)![1] + return importPath + .replace( + packageName, + path.dirname(require.resolve(`${packageName}/package.json`)), + ) + .replace('/src/', '/lib/') + .replace(/hotKey\.ts$/, 'hotKey.d.ts') + } + return importPath + }, + }, + }, + + // configure default theme + theme, + + // use plugins + plugins: [ + // docsearchPlugin({ + // appId: '34YFD9IUQ2', + // apiKey: '9a9058b8655746634e01071411c366b8', + // indexName: 'vuepress', + // searchParameters: { + // facetFilters: ['tags:v2'], + // }, + // locales: { + // '/zh/': { + // placeholder: '搜索文档', + // translations: { + // button: { + // buttonText: '搜索文档', + // buttonAriaLabel: '搜索文档', + // }, + // modal: { + // searchBox: { + // resetButtonTitle: '清除查询条件', + // resetButtonAriaLabel: '清除查询条件', + // cancelButtonText: '取消', + // cancelButtonAriaLabel: '取消', + // }, + // startScreen: { + // recentSearchesTitle: '搜索历史', + // noRecentSearchesText: '没有搜索历史', + // saveRecentSearchButtonTitle: '保存至搜索历史', + // removeRecentSearchButtonTitle: '从搜索历史中移除', + // favoriteSearchesTitle: '收藏', + // removeFavoriteSearchButtonTitle: '从收藏中移除', + // }, + // errorScreen: { + // titleText: '无法获取结果', + // helpText: '你可能需要检查你的网络连接', + // }, + // footer: { + // selectText: '选择', + // navigateText: '切换', + // closeText: '关闭', + // searchByText: '搜索提供者', + // }, + // noResultsScreen: { + // noResultsText: '无法找到相关结果', + // suggestedQueryText: '你可以尝试查询', + // reportMissingResultsText: '你认为该查询应该有结果?', + // reportMissingResultsLinkText: '点击反馈', + // }, + // }, + // }, + // }, + // }, + // }), + registerComponentsPlugin({ + componentsDir: path.resolve(__dirname, './components'), + }), + // only enable shiki plugin in production mode + isProd + ? shikiPlugin({ + langs: ['bash', 'diff', 'json', 'md', 'ts', 'vue'], + theme: 'dark-plus', + }) + : [], + ], +}) as UserConfig diff --git a/docs/.vuepress/configs/head.ts b/docs/.vuepress/configs/head.ts new file mode 100644 index 0000000000..a869976d67 --- /dev/null +++ b/docs/.vuepress/configs/head.ts @@ -0,0 +1,40 @@ +import type { HeadConfig } from 'vuepress/core' + +export const head: HeadConfig[] = [ + [ + 'link', + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: `/images/icons/favicon-16x16.png`, + }, + ], + [ + 'link', + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: `/images/icons/favicon-32x32.png`, + }, + ], + ['link', { rel: 'manifest', href: '/manifest.webmanifest' }], + ['meta', { name: 'application-name', content: 'VuePress' }], + ['meta', { name: 'apple-mobile-web-app-title', content: 'VuePress' }], + ['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }], + [ + 'link', + { rel: 'apple-touch-icon', href: `/images/icons/apple-touch-icon.png` }, + ], + [ + 'link', + { + rel: 'mask-icon', + href: '/images/icons/safari-pinned-tab.svg', + color: '#3eaf7c', + }, + ], + ['meta', { name: 'msapplication-TileColor', content: '#3eaf7c' }], + ['meta', { name: 'theme-color', content: '#3eaf7c' }], +] diff --git a/docs/.vuepress/configs/index.ts b/docs/.vuepress/configs/index.ts new file mode 100644 index 0000000000..b23dc923d2 --- /dev/null +++ b/docs/.vuepress/configs/index.ts @@ -0,0 +1,3 @@ +export * from './head.js' +export * from './navbar/index.js' +export * from './sidebar/index.js' diff --git a/docs/.vuepress/configs/navbar/en.ts b/docs/.vuepress/configs/navbar/en.ts new file mode 100644 index 0000000000..3c237a7afb --- /dev/null +++ b/docs/.vuepress/configs/navbar/en.ts @@ -0,0 +1,52 @@ +import type { NavbarConfig } from '@vuepress/theme-default' + +export const navbarEn: NavbarConfig = [ + { + text: 'Themes', + children: [ + { + text: 'Default Theme', + link: '/themes/default/', + }, + ], + }, + { + text: 'Plugins', + children: [ + { + text: 'Common Features', + children: [ + '/plugins/back-to-top', + '/plugins/container', + '/plugins/external-link-icon', + '/plugins/google-analytics', + '/plugins/medium-zoom', + '/plugins/nprogress', + '/plugins/register-components', + ], + }, + { + text: 'Content Search', + children: ['/plugins/docsearch', '/plugins/search'], + }, + { + text: 'PWA', + children: ['/plugins/pwa', '/plugins/pwa-popup'], + }, + { + text: 'Syntax Highlighting', + children: ['/plugins/prismjs', '/plugins/shiki'], + }, + { + text: 'Theme Development', + children: [ + '/plugins/active-header-links', + '/plugins/git', + '/plugins/palette', + '/plugins/theme-data', + '/plugins/toc', + ], + }, + ], + }, +] diff --git a/docs/.vuepress/configs/navbar/index.ts b/docs/.vuepress/configs/navbar/index.ts new file mode 100644 index 0000000000..7183393c31 --- /dev/null +++ b/docs/.vuepress/configs/navbar/index.ts @@ -0,0 +1,2 @@ +export * from './en.js' +export * from './zh.js' diff --git a/docs/.vuepress/configs/navbar/zh.ts b/docs/.vuepress/configs/navbar/zh.ts new file mode 100644 index 0000000000..8ed14f4129 --- /dev/null +++ b/docs/.vuepress/configs/navbar/zh.ts @@ -0,0 +1,52 @@ +import type { NavbarConfig } from '@vuepress/theme-default' + +export const navbarZh: NavbarConfig = [ + { + text: '主题', + children: [ + { + text: '默认主题', + link: '/zh/themes/default/', + }, + ], + }, + { + text: '插件', + children: [ + { + text: '常用功能', + children: [ + '/zh/plugins/back-to-top', + '/zh/plugins/container', + '/zh/plugins/external-link-icon', + '/zh/plugins/google-analytics', + '/zh/plugins/medium-zoom', + '/zh/plugins/nprogress', + '/zh/plugins/register-components', + ], + }, + { + text: '内容搜索', + children: ['/zh/plugins/docsearch', '/zh/plugins/search'], + }, + { + text: 'PWA', + children: ['/zh/plugins/pwa', '/zh/plugins/pwa-popup'], + }, + { + text: '语法高亮', + children: ['/zh/plugins/prismjs', '/zh/plugins/shiki'], + }, + { + text: '主题开发', + children: [ + '/zh/plugins/active-header-links', + '/zh/plugins/git', + '/zh/plugins/palette', + '/zh/plugins/theme-data', + '/zh/plugins/toc', + ], + }, + ], + }, +] diff --git a/docs/.vuepress/configs/sidebar/en.ts b/docs/.vuepress/configs/sidebar/en.ts new file mode 100644 index 0000000000..89a9ac0f8e --- /dev/null +++ b/docs/.vuepress/configs/sidebar/en.ts @@ -0,0 +1,54 @@ +import type { SidebarConfig } from '@vuepress/theme-default' + +export const sidebarEn: SidebarConfig = { + '/plugins/': [ + { + text: 'Common Features', + children: [ + '/plugins/back-to-top', + '/plugins/container', + '/plugins/external-link-icon', + '/plugins/google-analytics', + '/plugins/medium-zoom', + '/plugins/nprogress', + '/plugins/register-components', + ], + }, + { + text: 'Content Search', + children: ['/plugins/docsearch', '/plugins/search'], + }, + { + text: 'PWA', + children: ['/plugins/pwa', '/plugins/pwa-popup'], + }, + { + text: 'Syntax Highlighting', + children: ['/plugins/prismjs', '/plugins/shiki'], + }, + { + text: 'Theme Development', + children: [ + '/plugins/active-header-links', + '/plugins/git', + '/plugins/palette', + '/plugins/theme-data', + '/plugins/toc', + ], + }, + ], + '/themes/': [ + { + text: 'Default Theme', + children: [ + '/themes/default/', + '/themes/default/config', + '/themes/default/frontmatter', + '/themes/default/components', + '/themes/default/markdown', + '/themes/default/styles', + '/themes/default/extending', + ], + }, + ], +} diff --git a/docs/.vuepress/configs/sidebar/index.ts b/docs/.vuepress/configs/sidebar/index.ts new file mode 100644 index 0000000000..7183393c31 --- /dev/null +++ b/docs/.vuepress/configs/sidebar/index.ts @@ -0,0 +1,2 @@ +export * from './en.js' +export * from './zh.js' diff --git a/docs/.vuepress/configs/sidebar/zh.ts b/docs/.vuepress/configs/sidebar/zh.ts new file mode 100644 index 0000000000..a3405a7282 --- /dev/null +++ b/docs/.vuepress/configs/sidebar/zh.ts @@ -0,0 +1,54 @@ +import type { SidebarConfig } from '@vuepress/theme-default' + +export const sidebarZh: SidebarConfig = { + '/zh/plugins/': [ + { + text: '常用功能', + children: [ + '/zh/plugins/back-to-top', + '/zh/plugins/container', + '/zh/plugins/external-link-icon', + '/zh/plugins/google-analytics', + '/zh/plugins/medium-zoom', + '/zh/plugins/nprogress', + '/zh/plugins/register-components', + ], + }, + { + text: '内容搜索', + children: ['/zh/plugins/docsearch', '/zh/plugins/search'], + }, + { + text: 'PWA', + children: ['/zh/plugins/pwa', '/zh/plugins/pwa-popup'], + }, + { + text: '语法高亮', + children: ['/zh/plugins/prismjs', '/zh/plugins/shiki'], + }, + { + text: '主题开发', + children: [ + '/zh/plugins/active-header-links', + '/zh/plugins/git', + '/zh/plugins/palette', + '/zh/plugins/theme-data', + '/zh/plugins/toc', + ], + }, + ], + '/zh/themes/': [ + { + text: '默认主题', + children: [ + '/zh/themes/default/', + '/zh/themes/default/config', + '/zh/themes/default/frontmatter', + '/zh/themes/default/components', + '/zh/themes/default/markdown', + '/zh/themes/default/styles', + '/zh/themes/default/extending', + ], + }, + ], +} diff --git a/docs/.vuepress/public/favicon.ico b/docs/.vuepress/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e481e5dda71327b885d4797cac93939d8030d0d6 GIT binary patch literal 15086 zcmeI2eQZ@{9mk)p&@xv73ES+pKU&Nj`(tm3yDbc8dlLg#kyS!60xPsw=$J()2(q=% z7I4!)=9Vqd$jpq6Z5S8ljJg)1>7of@jEQy$(Jb1SAc>OL1f~QT$ItiNb8gQ)J?A;+ z-WIq^xXHKA+wbN3yqu@!`JKm@3R7twddQI0o8zA}rok9fU+fPVnx#Y&*8zb;h7=gpX*+s%ffoqr}ysN=657puJaxcSs4LI*%O}X<8 z@`LjN@GIbWP<}yBrkwL|?E#lP?&^c`J>|^V=LXNa!D--+y`QSCtp5YS?tOI|v@*2rH z`(9Y?;xKuuY|d8QwdeypD!>sdANUTu+2U+{ywQd7Df%Fr6<50t_{e}WR{p$u?iyU` zZ2C;bh4M-Ap3ThFE61yaP0klFb8UrOu{;nkDW8gAA9$JKZ8Qf!7}{6 z{PktdrqeZWp7cmY_sAN)bH)3u>7dh7#pAQ{P~=!1M# zPPY%(XafJT@_#4m?Cc9Yvp(l=$~uzlVRWoEb3U7R&9>)zV=4U6y%YS- zYM-&+_u_JA^Xl~6{pVUb(oHc3;&5lNeL$xV#GeV_KKP>+XIp2?ei<5bpLafG9Z6R< z68azxeZ}xc{sAx!;^!CsyN^u1$t#T4kF9+UJ828+X0GJax3m>3Gz>U-Epu(Y3yDj-b4azii27igzP%<4a}qkG5`L zJrfT7q{Z3(#A5q?*_t`q`DjC}pMwPCu3=l4 zyI)qDWMcKPEgwldJg)BgB>yq+npKB&)BnA|nQ$s^w@-}k$d+}DvCo&?MuUv7|9Oz zeYa`2qpe|>wKI(0D4bwihuA9|a{7vH9UD#;ppUkzia?pEV>KXGcEdOFrd0j+a-TI9~pUvN9|dvmqH3F6qWMHMY_9~iGql=PCK@V10K182U}Q8d*0X2{u3Z)EZUdJ* zA93Taddb9|HA?Z1y?XE`Q0SNQL(KcUWa~@u71qIy&XCVU`R+f~>U^6ZN64&Ak& z@C?SB7sNL?n_A+P(p_810HAjp_%)ca=5~LT?>V8fs_J6afo$AXEC+OY!G{I@>HC4# zBjSsUfg3NRErNq=^cLeE`9;7d>e_455hrhG2c&QYf%~w$mzS(i(%hxeD7uA zdu=iCJ^ZWfDP&^SqHHFf1(9h1=feKo_}q5;_Y61QhD=PnO*UI>V?evU3+bI|%9`8z z4W74z_?p(FWF#B04rEidW54^*)(-SeHR+!<=iZr!ijTEs&TuY1Q}8S>4{p3G`fi16 zw?~Zu^>=~a7x?ygxbdyf^M=pM>^)x+lrP|btR-G0A9sa0PKX&EV#1};IO$h z^KNHb!vaD10{@JGZS{2=%{m>hTV?wy0)$oSHE;-+oB4dwBFKFpy9-I%)x z^7WwfNfl@LPT04eq5a>CzB9lYJ4VbczppE=x&r@<74a0;M$GdlpYr_}D14{V9{(2K z{JSE)VX@wbS5CRlqPnQHC>ydB@jS?;j;z)2tQJ;@!Xll18%eG1|fb$hpOT{7ja zwCdD`{HdUhY{-^u`u4q4KIMC^2R-{ajAUz=yPC&8{csJof|$!($G+dH4f(l29ogvV zeWZr|PukDVqYH_@u;uH!?)PsDSVituWe$1QR5lep8Ls$QET8eO)7e!C! zf?s-2SBmc(K$}db~138V^*8;k}4b>%%B{GY_S?LeG-Qq%d zuWqr812Q**S$9-!I(#p1ilud?1-9ed=!qzX9$Y z(4O7i{?7jlwpt!u-R&b}OHS;`s@AKGj?>VW>)7N}RN4l%QIn^ILUT~-A zH2=dtA)tR+-?7}gM96qH&Uw18kiJLV81prToW8k@@xOPg-$&(Dr#8t**3}u#O1D;E zd~5liP}{yDQ;Y1!*`KTO`s7uoHpxiV*Yjh!R}@nPmz#;95RVfmV` zY?2A4K2RHj+O(6l7u%BgNq8&XDs5`S0B%V%OG?#3Cz#ww9M>%Lx|t|+U$EmJn~r2SYR!O+F?Kf%KtH6%DxdU)0eU({cU3 zs518d{6JCjhq24FElzYNLNLMC<=t1Gw)m;=uxC7%e^O@mjrfJ?UC+$FS;VYy-Q@qj`2s7cn`y(pWe-=<3oC9rm;k1Q0g1^f*>n3`W!O8v??9$A6$N@=H1 zY8coFxUM|AG%BAID~sx0V0sp&9X!4k7E*?gU>0nXdv+PvWr!mY-rCE<8h1lhJ1q`&{BX7=xHHVLu z&OJk4@_AJJGH%V_aQyiDx8mRK?vjRvhTo13OC5I}{~ByhlkkLJoD-QFK3@$7jlO>S zIT?);u_tx?7VqafEEOpn(tQIbzCghf09-?<8}E{TT|BcZiWV78m24T1Vpi*wOE_R?zYxq9) zUj=WN)kTk%`HZY=>!fF|wVaet(T_6=_+oNC=N=cgK%UOYx~2_Kf}9dR_A}lR+QGY> zdv*clwSt^nzBOD4C7#L=UprxYt+2qh`8Ll|8+olsbge8(vYYMjfOfPfcz5)hH55A| z(@$4ZsuRIAD07-2YH!itbJ13Yts;xF;|rZ?ueGcBepKbsuS4%^J#cKoeJBO zF09uM{s<*!D~k2I6SXD!+T%9VGSXSX*4FCM6@1bM4C9bqb`YCnP;o>br5k<)#hhJr zbQk_@xZJfhP^404DvxF{?6Q@=(z@`)WurX974}Ozzsvp+k5I97sdC>}GVhun(7zap zceWjLkvr<^G(#;dyO&LLYqG^1S(OhSbt~-g+DK^1p=?8UA2y7*Jx7i+U(Tf^X{Vl` zY&72kA;NQD|5z2Tu`0#9oK`(SP*~ZiqCGRsM0;os{gz7CbeHixW6C1P829ko5hJT| zLjN77vdKxHeqzvX?z9<20Rdf~-;AlUf(y<8A6lco#!X$%TL!G{7F1dTkfEpzJJ-(A z0s2*0@CV-%yG2L)y-8nRgtL-;v#(t#!=PDV@_lT=p2LpP2!YDYr}_?n8&YU0rDezG zuq#8b4X%8>yYB6bav<~>uOL*|Y7jiIY785)AlWgjEJEhZ8pd6rB4x{5%r-OxU-NIe zn&FBOaiEg<_ga|rVx@FC2hIBXOrsG%IijAvA6cX!XnRS8i(NfCC7M;jB5_p=>7S^K z0U#Lvv5?Q2TDS4lBpJ40REv+eGxXjqb3hp4&8XKlx-;aE*Q>9z%bxf3U7QRw@N1B> zN5~B8s>|ot^!&~5TziN0@aaCWIb9E6YvCp8w7Pk6-qXO(UXJ-rpHyb*#g2icYup3V z7JUsXlXCh%y|cpdR3HE8V(ZA#Ng8B=i+GC+0HXY}OM6~Q@GY`9+-&FPR&%Xw>e(S3 z4cc14km`XkdJHI%kd>JKE8!M++d+F{zA<@SvrWCToP{s5cQo3R5B7BLgHc#o&J&Ko z1^U3~^T&Ng&*JZ@oEA&)jPCGT6Sz%qw3_C7O?cVAs?2y(r%BI0UPEW)tGkz9-O4jt z-%^8xTi6!OYbcE5_*BtRrL~U--Y?T^YJ-Ki23JPR!dt$(T%VQNm_&Zo#BSZedBu^qi8`}D%Sf3Z_=vGi{RdWOXS z;`>x=9YhmTock8<42b;EMY;V6qUiRDoZit1-;&r}C0Y1uBy_Zh4KdJT1Fv{RewC38 zilFBYe@L7^uQ_T{jrRgm`?}mYjdbp>e3KR7q$B6q_?OK~$jxWrRBQnmkqz=T-)c-UCxTbjr`FB;;93C}7aGZqOK9sUnh3Xrbel<{+JiBz z3aOOb`JVKr%OtP^CeQe@j2q1Clq~#R_vlpmu<5u zUQs3KE}T=k#YZME`~I#e?x$T`Dt%ld5egf5^)NL!lj;K}#T-r67YF1^J0uPzdfGYUw^JiWH zOGU}P|J=C$qE~%%$GCk8Soe`r4z;>hTB(s%eBAyhdWg69*GJuv1^*e^BY5;C#{5Lu zeHQVrpmw8iEMNMgasfl_#W21X+Oxk}43(D+6-s;-dS$%O2k{fjECyF8^4fh|nGMG} z^C2@f|FFsw?0@sga@Z}w2t_#-KP#tykFg#Sz2M=q8X3|yurd0<5W-rRa!(Ar683Uy zUF15d>4qIQDC*o$ZHcq4y%=zTWH8uA2mZX+TegDiPCHga^Rk=l*DekT&Rqh|8vs;p zs|lE@JLj80zOy67o$G{X^UbF3UH#xiB!TZELa>ibkfu~2{Jm-_XIL`jquT#W2lNji~&^m$k%lYEonNTfWd3*myKps zQ~n2@_jA82c+~kot*Z6D4v$>!X^bu^EVu?g^09=v6fTs>WHEb;Nh0&udgyQjo1u#h zBYQTfN7g*Lx^N>-2lL(r`H_2JfEgvHN73iI9mRi77Trgqh$W_;mqtVJ-smiAmW_zg zYWG!(_m-@Be^*uhL&EWDI`%t62pwMOnV?>-l_2ohnQgh``9 z&AgFt3UW99h@rPzs1jppK45?Csu2sB6jO}ZEf0Ab_A~4yU*P74Xl$Je`cU-beUS6< z8f8hAZf+9xe*0)_!~ymQXE;*F`DP)*k^QKnwKdYpvN`xro?J!@KXZchoHF1QV3v4d z*UQhew&}eTrta#DyN3D$g}0`Gn_T~;rxTy}z}IS*){c9cm!oh-c>T9*y7a7k(dGBV zWgW`gYyVgDjd0PTjImyRL=nySK4p+oSE+g8Zo-0Hh5q|o*t1Au;~;H(%Z3V#xiA)kFPYTG%vMg=~f@Y39!pB0}4<%~J;d*LP;`fNq3 z94&1GF=BReV$u8lHFCyT?U%n=T3k0N7JVxn=9l=`fyJBCFHr0v%x;hx5&N^?o5hZN zc`Q=F^l3jJXZQ1R=7~&0X;Lcp++C~|{V<+APH=FWk6#yH8ye&iVnn56!&*5oCdLITT zoENe@$9t^>PejGWnf+6J_ZwPnd=foaM!I@fq^-VvNR+`v5`?QO69qS{zs`Y>u4{6@ zEwDNQVN-USIu$s+&jsN=UAAKKNSb$kswUDfR%1>pCxw49^vEEFY~+!YY6$&{cMZ=1 zaJ(`b=KkY@kUhQE{t&m)f8;JF{h5}wZ}EzH>s!}brAnL&;LDV+g#9~Wb0E$E8B05L zF5(#B1q4E$s9w<nNcb$fJ zW7|J^CN%r(H|TbdbKi)ts_p)*-4a)%*qgDdhm$dk+Fqk66*8wbYRMzt^}rtSDm>0_ znRV?i+D1(jk>9+!XOjFQxhQv5W~->MnC^jTME{IuR`^(HVzOdTr0dGQ6?Vfr=;}U6 zh|qhEtAMOB_QjPAK}Pn${y#tBe}n&@(eMCUeh}e2LY#vw|4UIvU_aD7ty|!?>FWQm z>A&Ztr;#}DUu2?U{XZVe|DC~dcycK$Yk2g-ln5POpMzo5x@o12_}V)-PTc0n6-`xi z(xI9F)vXIL!ZtPskjA*q*-t#sZ^eVEv2hXs*S054ngERA_1yv;jl6;fV&LB1#8hRM zDfb&|$Z2xv9(QDmP7OAeQA(B0YfH`FbLTn2FPk+mF`)Ug zNyyMkxgezxil*)n!#PH%GyEP7mL}aK@pI-FzThe9NR*g$YSD0I%9jF#Fy)In&RsoQ z@;WuRjGIf>RsVi%KPY>lHHYK}ZQSA0F z&TCA5eT|6Yit3CB;idEiL4&vsMGn5+GZiRH?^MJX>Rr5z$Paoh1-$pkpZcSx<(PTy z2olXYBJzclbq_RPEq_8*%X3&Mws*BGC#x()ijRx1p(pCh;}=LTlvFxY6d6P2f7{P& zp(SRQSz6;r%t9S)n21UD4Qbbrx_+fM$prpUg}qp|(|PhzJ4$Ct#_{aS~(SwOE1FEiiK!xD(R%THQQW9CC zEFP#KW(_;}t*s3>qNH)(OGjjh9dsrKcW~AJib3eM zd0b z$B+5;5MP!Y#MqQcXr)64&zz=S5eIsghy#@LCB7{$oz3Op%_$1bdEWEx@~@UL>yS`) zO7vKp9BSJt$q(7LZH1GrH~+eTJgiD$l`pxTw>33#6d)H0`gPq6v1N}S2JocT21Q~L z&za^L<(5J;J=o9o!5Lqp1%>-n@!=XD9r zvLOPiU=?c(Bxgezk?0wv|ANs=^l^N$JPR=QUQOrD5Mx!$J^> znr2zqvKwzhU$iY9@X^^*^ES-XO<|pK3qxBC4)8)ut^ruZ`Ab+z`w55jNPAu!ue@hk z_0Y{akZa*j10X;h&zyH5K76QjEeV)+4*9-_mm>rQ7C zbmm=C$f3}AOS`zg-)ab9PQKw2Hmr6U@ETPQX z!C)v?GJku|DTLs>>y}hCbm+HA`4Y`2q$P4H9i;K=`#k%7cZKwMXhvbZmNLV+=mnFA znW<8n448c(*3I_Zfyw*isT>>n;aq_vfVn+xy!OUP^yv$&dl?@3FB|EpYt?Vmx)s?f z&_3gHIj7=R_+D-=BSJSLzbOhN9kGyYW`xUM(k_U~(8s|%=LgS3JCeka`#X`PTx5tmmnX2TSAa1%#k1L<2 z0>|c+AX^@JujC$c{#Bb$o`{UA2o0z`U*zr&0J&KJDYeGa+v42W-Xco&7|@BcMz6tG z7~1+n<}R@;l0sVSkz6?5Z!b!8viPWD_j9s;Se-ZMLL+yKtwED@dvurw3B5V=0-cQ| z{Ao^2$S8-&$Q!QF9~Eoku%+0}M!IMw{X+TK3zD{SQgsv;~5TktRWFEczPYV?v4sn07WoeB zb;yai#=9A!(#76VPkpOiG4V z1s|`JSv`FmggXEV%DC65^@?1-SqMy93t06;rr9-n@Iw;4Ef?@>Vl8RcrSW(uev`1b(FOO;Y<@FvT;PYveqPU~3?_7(Xj&rJ*}oT@O6wQ0uDpKloI zE3=W`!g@Pe1n`T9n$6r~E+)E{!?WnJtg09lL3Pa~6T9oGVjf4&!9l*%a*Vv*R!1h1 zge(bBA3^}@cmTM`U6UWdRL05ttO()kf$S=XX@}O&RKwt6+40Z;R>Juu47luazl@EQ zw{UNV@i|6A3U7}cDir{U1pWfd*=Q*LJeh-QQ(_eA?qQnX=C4Nwfrxj+(l2$L^f>nk z5{*D5$9d%a@;j&Rd;=TG{u%wPeG0?w>XT4v5IU|Cs_4UE!P{#gNZT7?T7v}F3J&Xk z^5t21#WPw2cXQ>Nt6{~}Dll^#7Ey^gn;bi?856T)wPTz{KDgEm^NM&JKDHo)Q3#v%tXv!Lney}YOd%tO~@KRd=*=mg(9w9s;L{tnBI#5n6ved5r} z7Oc6>Y4<~lnFVBgczkkTgAbh)xlI!$APK!eooOsrLO&t0BgbGBqGK!$4b1R;GvVOx z+KUhavBKPf94J&|^-oBuW9j$(QQnRQwqfJ3ukN$IBg8<@SAhysmjq{LXAEPuxc*^rx)rEC-*#CtLIi0&{upbw0s-*~+c% zbXTiK%|MrbI|h!{ZB48;KvKD?Ey5S5U(V*$zA+nCZhSOr*XDJk%O4dk%g^RPpkAxJ z5zKpdpL@2x$0~_;GQ<+_DTA~u+~F17Dh<Ic2WIwROO(;&Mjc32EJ{%Y0fA((Wg# zy&aJNa(Tp+uNkbeV8ivN+`gxW`NnRR>sA|N0#CYWcOkoKco z>b7@(Ku~NaOUny1BW`>8Es&B>eWY{i7W~6A!r|Tpmu?_eJxOh(wOyK&^15|sCrdGH zGyC4JCE8s?JThw&`O8_Jc6u|Q#^01zdcVqQX6G=*^={pd%1-eM#lXfl1LY?tb!^Gg zxS@r5MO|b@sLfy}^W}LlJQbRTpZL(hRC86nlA%7P5a-20_ax*#8ZrW$*MYU*nsj>{$(zp=u_(7Dy zR2jR)>;r|6vid*grS=V1jM|U4E$DvHKGJ4DpR_Ma)KJA(k!B<*ebxXG(aXO5yxt_iFz>+1Z-kA}+ zNmphsGY%tmxPXt>^n2)}$ooCu`alT{xKDCG=+WcVp0VSPvz7_jMB5*3TVebHI?3Ym zlN(NN8l8$%lkcT|uThP^G|PrH=hg-QYxGa{1Tcl%5FcRer2sMag*q7-o!V6|fUDsw zi~Fp7i!&&SR7PNRZ8C6{7ppAgv%BSSn)ZBA?!21y)~+Ug68vP8@dA1HHwSuh z8A-Xd;}#?VmYzB)Hr3~9BH>TVoI`{QP6hwvNj?302U)x2J~T5GyX{f)WU&f`32Ld& za;0!o@ydUOd0Q-DKp1Bhz%GJ zNBTF$u^S@AEhkm!amD&FkaIG*&@FNB;?Ht$iZ0VP)Lf>}gJY+V_yCw|KCZG zWKV&;Ot*&Tj;Ih0A4O1l!z~XtTs#h`IG!I@PCY>rSzpdQvDJ=I9;fz zO3gAM+f?jZLq>y^)B^&xCVEj_5z(E@|5+O!>|?90ewK{vIY;IH2LB&GD2m`um9hT( ztbCwYYU==FcDB!LdE}N($k=tD{j)u@7(3qk*W7Q%4|kpE_jf=(@r(h{Rr*R?fiRS46~(UG_wD@9U-wgMXYiZ{R6F{_RSnHhp2Pp7EqjL((!I} z1qM|){Yr|ZanE+YPNu^q$3V7peX3gj*Ke7`R!>6f!Qyvo%L$1x4>>xofB}uEaVQlX z*2I=^?fSRmJik?KJ8LD1MXK7>sMnnSOz;oLn`GIt-6kZa7163jCrnM-lN|GV|Bxv^MKjPtco6`EN*urV@G2Bq0OF!x%G7L z%Bp@!aBTu2$%zBw2TCw6I`qeh5-N1NiMmY(VGG83A5%I48^3RG;10)zt7YTQg|tCn z)CAnPF5@jf=nwZmjkmNx7hCaT%NL%*lWIKyZvMxJ27MYm-<_CI2*OZ!-`?K;UBU@Y zLKMGTRac!t6xm5pjytb{&}Os@zi+i1S+IxlAzEn9E!qT#3;1A7kjOCVS7zwBq2prH zR=4!}%c!{XM$d%2=lY`V&bb6upy~4axcf=+(1RnXsdo{$$`BAO5xi;eZiSOVJv%v2vax5J2$ezu{jT@+(kb=-Ul{67B zgL9GbJe9XuAUz)l#R4+;r||0pM}C=PD`EW&7&L6|Ie(l{SV039nSeOI(JdT%XrAxL z&SOxD8sV;ntp!f~quC&7gkWQ>uLRu2EyhJ1Ev789R7ap3zbYh%GKP#c9{U{5#FBIoIE6s0l78wajtKb}a zFj*RSJ_#6#hS|=#oT-o{wEBhhLinLjKM?rbI zSm0?HR%6VxjS1Uv zvvq2wCv@(zO2?NytLXCF8l|wjb^tgjSC+X~E@r z*y%vHevGiOw)prkw`FsC2%IOTJAv>JRw-K0B%F|+B=FF@FTlb8#A31iZ{s1%99)YF z^P16eK544N)O*hnn(XQ&3J>pbv@bsF*(w@PEtu(cR9UDOc;nxa1*b@;PzqxV6Ybxh)CHZ$a z<8UW}%x`GnwH$HMK`&+k--)4w+7#0A*q(=JP2n31upqwrdEIW{-+~HZh0JwqhJQ%A zt8~;gvZCwpq%GfNkMO+-XR|?W)wF)mFE`(^ z+gKGc5*;v4t=c`Ei z=0Y7-m3Ut%M-1_(1A}5@C2FTLT$|)T5$U&ATw?l)>L6LFNsWcmPfD^^2r#c zmEFDWzp)D3!YNct9_M(g*arX7WmKBH)XOp}2RT8x7h$GcazDHnIj|pB23se zuH;OIb3;CZ&O|xt6^!kG!ZTaw;L@j|gMaPMS)j+B<1i7>&x@L)U)6Pcg6&pTh3>N9 zU%vJ8wWJK3_;8Qhu~^%TAgXLeyg_&&;w+{{4RxXC2iGm}9UAQDVT`v~tq+*t zY~*JuQrf^bH*4Y>70{bm2r7*m8v?%W#q~Y>>p%nFysLZ)3~7m@2{HKOGPQJAX%&^Y zzay>USl0aYyUqbkPGp*PZE>5ls>|k_*QoApAem!AT_}SSz^@B**}+z z_&y->diR7RBb|i!n^j!;v%p~wR`9>q0#gZCX-k|0q?5qJ18u6LU6HhO4eOnB+A{#v zc3b8FO5TmC__nSubYCv=IB(=pL4E#t8MSr?`TQP=z$sCKtvJ>M`JskrUE&V*;sHYw z(~h}#L@21AhQcHz2?HLf=iju&fvyHRQ zJx<&3dwi!G*5~#oJJ@&zQUBY#l1zQKw^GIpD}XC8ys}NU3i2t~TetL&3rZBqL3SQ; z^8Szux&_$EM%-$UuU93;y_Ge2-Kx%4c%DON8MO74w4v5Kw7o{=wce=3xXGB4Mq~~H zZWIlR%uYF48Hr*_E|gjlY6J4xPQ|snRX9BV7>X^@dp=?-9vh;jKPO1rH|~D&m9BXg zXcwbLNC0HAvFAZ89yG5_>^9v(Hc)J}H_0+si(1xL@NzXQTI0tV_>Zk)1|~mM4_Q@N zYgUEtH5eHi)$8M3n&nT&#r*V&phlrZlk4x8{1QRk@nvozn%|_48}o@iN+*UOrK$F` zgwtgv&W52i7IK(`Dx=RS$+9!Yu3oyEQ#pP-Ca}wIuY8>@v|5w)c$P~Kx~L3qTsF%J zH1)S%Q^N;2!q!780j;|k7R}f8QjaEn3f?vPz2-!d_N|EL=x&{YYM3=dKAvxM^b$1c zq{Bor@Z}x)GHfj99rma6;dCo{YE~YzGM8&TU;Gxb)W1)4asq z;MdR2jP+^~3HAPVT51xr7z}6)W6qr`Q&heaqtkr1OVsfc$Rr+I=y4{cr+r?RHBlS+ zbvAJ7X89w_K30NAVX4`-M@5Zdj z66*7&S9x|!`i~KpJ!w%%=rkkrN`te$c!F4LFu~e zBir2>_V{;N)G1BgpY(#>PNkcd?2+q9(MD+h%ApMXRqV)q)_R|}h?G0bwI&(e&LlZ${MhRXHvu4ylr#)nju*iy2!NjmAcc>>?T(H&^7<>`{n zW$OGjT7!DbS7aoFmYsB{_>uHifu-2(QO6Hwxd`X=pM3srcU^$WUsOiYp_DEU_xIm! z*qcV(nwRnVURX{$nS~x5niKI0PikQ;Babn18H*WlUA$L}D(FNjti2-7db=iJf?G(i z3fclGD;%}Ni5=-(j_Kn^s@TkGpDplIT8qbl4rdi&BW*pZ%D02n7S)D`*7>J0wBb%` zM;q<=F0%uCVq4~UZIN<0uegA=`);6FZ*cCSRe9s(1BjCFz=IMQ_Fyf~h5ID|G^c~0 z%4hNlrj&UA#Gqpxv%hVESS=(o2&F6MWjJF(mI>n8?AjV1tVcMddf$D2>OUo?JqS-v zdJ%mRqS44A*Zjztk=*qHx##*(H#sU+8a)+OnHl6Ao5~M>{1xD=oQhf`26>N3w^~m| z&Ddt63NEPHJ$|w6xN;UPjmjEmD~}i-M~$K4jG-4@bofrM)%Ssh&sACDG@z7@Tg7rU zqG1G_+3c(&7l76Fa%rVAItbdzpei_?YrNrHHRGG(&m3{MQ#y7;;3y)MITDO1zFOi} zb(v)S8sGX%l&EGr8rl9DF4=ayq~3GhZ(dTyL__>-C4ScF)@^9~=&?41YafKBUX#@2 zYkXCmzqBNkXrJ)AOd!>vPvR@j{X&|53|`}_pyt`;Avt~j)vPaB&mYz+s>4`n?>T0b zh4C943hpx9zxT%a7TJfOj)$b<;Yk&bmZXcN0(h{(C~i-Uwnex);FEan*beb5@La68 zwPK6jA*-p%33|a=uM(p$q8rtzkMH>?FSbrH3S6!_AwJAHnH51DMkb8QZ-|`=3T_pb zwzybPf=ldsgib(>Dg#!Qki#46_krX`m|~twV(ji6+WdOb2=Sl)*KHu>i5TYc{`bc% T8@2H(qeWd=>ve^qb@=}Sfyh#R literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/images/hero.png b/docs/.vuepress/public/images/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6beaff060d4e383169f86b007e13ef7313d393 GIT binary patch literal 153793 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%0Aq;h1Y(#@xNill5DXwfr+?5g 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 N20Es&IxXkN{{t)V3w8hi literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/images/icons/android-chrome-384x384.png b/docs/.vuepress/public/images/icons/android-chrome-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..86e1fd58b3f6add80bcbd795214aa540b8023ba4 GIT binary patch literal 15528 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/images/icons/apple-touch-icon.png b/docs/.vuepress/public/images/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..208915f1dea6694cf2b6cd9824f5036a4508a715 GIT binary patch literal 5373 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 L9hC|ttMLB;KPvf_ literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/images/icons/favicon-16x16.png b/docs/.vuepress/public/images/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5047e7b8f2d6abe0063329af60eec70a1ca4fa GIT binary patch literal 806 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/images/icons/safari-pinned-tab.svg b/docs/.vuepress/public/images/icons/safari-pinned-tab.svg new file mode 100644 index 0000000000..dc0b992c04 --- /dev/null +++ b/docs/.vuepress/public/images/icons/safari-pinned-tab.svg @@ -0,0 +1,23 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + diff --git a/docs/.vuepress/public/images/logo.png b/docs/.vuepress/public/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..60e17006ad07cd313788585e2f5e528fbb7cf821 GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/manifest.webmanifest b/docs/.vuepress/public/manifest.webmanifest new file mode 100644 index 0000000000..d2e935f1ae --- /dev/null +++ b/docs/.vuepress/public/manifest.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "VuePress", + "short_name": "VuePress", + "description": "Vue-powered Static Site Generator", + "start_url": "/index.html", + "display": "standalone", + "background_color": "#fff", + "theme_color": "#3eaf7c", + "icons": [ + { + "src": "/images/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/images/icons/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ] +} diff --git a/docs/.vuepress/theme.ts b/docs/.vuepress/theme.ts new file mode 100644 index 0000000000..907c3aebe8 --- /dev/null +++ b/docs/.vuepress/theme.ts @@ -0,0 +1,68 @@ +import { defaultTheme } from '@vuepress/theme-default' +import { navbarEn, navbarZh, sidebarEn, sidebarZh } from './configs' + +const isProd = process.env.NODE_ENV === 'production' + +export default defaultTheme({ + logo: '/images/hero.png', + repo: 'vuepress/docs', + docsDir: 'docs', + + // theme-level locales config + locales: { + /** + * English locale config + * + * As the default locale of @vuepress/theme-default is English, + * we don't need to set all of the locale fields + */ + '/': { + // navbar + navbar: navbarEn, + // sidebar + sidebar: sidebarEn, + // page meta + editLinkText: 'Edit this page on GitHub', + }, + + /** + * Chinese locale config + */ + '/zh/': { + // navbar + navbar: navbarZh, + selectLanguageName: '简体中文', + selectLanguageText: '选择语言', + selectLanguageAriaLabel: '选择语言', + // sidebar + sidebar: sidebarZh, + // page meta + editLinkText: '在 GitHub 上编辑此页', + lastUpdatedText: '上次更新', + contributorsText: '贡献者', + // custom containers + tip: '提示', + warning: '注意', + danger: '警告', + // 404 page + notFound: [ + '这里什么都没有', + '我们怎么到这来了?', + '这是一个 404 页面', + '看起来我们进入了错误的链接', + ], + backToHome: '返回首页', + // a11y + openInNewWindow: '在新窗口打开', + toggleColorMode: '切换颜色模式', + toggleSidebar: '切换侧边栏', + }, + }, + + themePlugins: { + // only enable git plugin in production mode + git: isProd, + // use shiki plugin in production mode instead + prismjs: !isProd, + }, +}) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..337defa917 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,15 @@ +--- +home: true +title: Home +heroImage: /images/hero.png +# actions: +# - text: Themes +# link: ./themes/ +# type: primary + +# - text: Plugins +# link: ./plugins/ +# type: primary + +footer: MIT Licensed | Copyright © 2018-present VuePress Community +--- diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000000..5ea86d30c6 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,30 @@ +{ + "name": "@vuepress/ecosystem-docs", + "private": true, + "scripts": { + "docs:build": "vuepress build . --clean-cache --clean-temp", + "docs:build-webpack": "DOCS_BUNDLER=webpack pnpm docs:build", + "docs:dev": "vuepress dev . --clean-cache --clean-temp", + "docs:dev-webpack": "DOCS_BUNDLER=webpack pnpm docs:dev", + "docs:serve": "anywhere -s -h localhost -d .vuepress/dist" + }, + "dependencies": { + "@vuepress/bundler-vite": "2.0.0-rc.2", + "@vuepress/bundler-webpack": "2.0.0-rc.2", + "@vuepress/plugin-back-to-top": "workspace:*", + "@vuepress/plugin-docsearch": "workspace:*", + "@vuepress/plugin-external-link-icon": "workspace:*", + "@vuepress/plugin-google-analytics": "workspace:*", + "@vuepress/plugin-medium-zoom": "workspace:*", + "@vuepress/plugin-nprogress": "workspace:*", + "@vuepress/plugin-pwa-popup": "workspace:*", + "@vuepress/plugin-register-components": "workspace:*", + "@vuepress/plugin-search": "workspace:*", + "@vuepress/plugin-shiki": "workspace:*", + "@vuepress/theme-default": "workspace:*", + "anywhere": "^1.6.0", + "sass-loader": "^14.0.0", + "vue": "^3.4.15", + "vuepress": "2.0.0-rc.2" + } +} diff --git a/docs/plugins/active-header-links.md b/docs/plugins/active-header-links.md new file mode 100644 index 0000000000..a4b0ca0b00 --- /dev/null +++ b/docs/plugins/active-header-links.md @@ -0,0 +1,74 @@ +# active-header-links + + + +This plugin will listen to page scroll event. When the page scrolls to a certain _header anchor_, this plugin will change the route hash to that _header anchor_ if there is a corresponding _header link_. + +This plugin is mainly used to develop themes, and has been integrated into the default theme. You won't need to use it directly in most cases. + +## Usage + +```bash +npm i -D @vuepress/plugin-active-header-links@next +``` + +```ts +import { activeHeaderLinksPlugin } from '@vuepress/plugin-active-header-links' + +export default { + plugins: [ + activeHeaderLinksPlugin({ + // options + }), + ], +} +``` + +## Options + +### headerLinkSelector + +- Type: `string` + +- Default: `'a.sidebar-item'` + +- Details: + + Selector of _header link_. + + If a _header anchor_ does not have a corresponding _header link_, this plugin won't change the route hash to that anchor when scrolling to it. + +### headerAnchorSelector + +- Type: `string` + +- Default: `'.header-anchor'` + +- Details: + + Selector of _header anchor_. + + You don't need to specify this option unless you have changed the `permalinkClass` option of [markdown-it-anchor](https://github.com/valeriangalliat/markdown-it-anchor#readme) via [markdown.anchor](../config.md#markdown-anchor). + +- Also see: + - [Guide > Markdown > Syntax Extensions > Header Anchors](../../guide/markdown.md#header-anchors) + +### delay + +- Type: `number` + +- Default: `200` + +- Details: + + The delay of the debounced scroll event listener. + +### offset + +- Type: `number` + +- Default: `5` + +- Details: + + Even if you click the link of the _header anchor_ directly, the `scrollTop` might not be exactly equal to `offsetTop` of the _header anchor_, so we add an offset to avoid the error. diff --git a/docs/plugins/back-to-top.md b/docs/plugins/back-to-top.md new file mode 100644 index 0000000000..6e9596481a --- /dev/null +++ b/docs/plugins/back-to-top.md @@ -0,0 +1,27 @@ +# back-to-top + + + +This plugin will add a _back to top_ button to your site. The button will be displayed in the bottom right corner of the page when scrolling down. By clicking the button, the page will scroll to the top. + +This plugin has been integrated into the default theme. + +## Usage + +```bash +npm i -D @vuepress/plugin-back-to-top@next +``` + +```ts +import { backToTopPlugin } from '@vuepress/plugin-back-to-top' + +export default { + plugins: [backToTopPlugin()], +} +``` + +## Styles + +You can customize the style of the _back to top_ button via CSS variables: + +@[code css](@vuepress/plugin-back-to-top/src/client/styles/vars.css) diff --git a/docs/plugins/container.md b/docs/plugins/container.md new file mode 100644 index 0000000000..db3912e3a5 --- /dev/null +++ b/docs/plugins/container.md @@ -0,0 +1,165 @@ +# container + + + +Register markdown custom containers in your VuePress site. + +This plugin simplifies the use of [markdown-it-container](https://github.com/markdown-it/markdown-it-container), but also retains its original capabilities. + +The [Custom Containers](../default-theme/markdown.md#custom-containers) of default theme is powered by this plugin. + +## Usage + +```bash +npm i -D @vuepress/plugin-container@next +``` + +```ts +import { containerPlugin } from '@vuepress/plugin-container' + +export default { + plugins: [ + containerPlugin({ + // options + }), + ], +} +``` + +## Container Syntax + +```md +::: [info] +[content] +::: +``` + +- The `type` is required and should be specified via [type](#type) option. +- The `info` is optional, and the default value can be specified via `defaultInfo` in [locales](#locales) option. +- The `content` can be any valid markdown content. + +::: tip +This plugin can be used multiple times to support different types of containers. +::: + +## Options + +### type + +- Type: `string` + +- Details: + + The type of the container. + + It will be used as the `name` param of [markdown-it-container](https://github.com/markdown-it/markdown-it-container#api). + +### locales + +- Type: `Record` + +- Details: + + The default `info` of the container in different locales. + + If this option is not specified, the default `info` will fallback to the uppercase of the [type](#type) option. + +- Example: + +```ts +export default { + plugins: [ + containerPlugin({ + type: 'tip', + locales: { + '/': { + defaultInfo: 'TIP', + }, + '/zh/': { + defaultInfo: '提示', + }, + }, + }), + ], +} +``` + +- Also see: + - [Guide > I18n](../../guide/i18n.md) + +### before + +- Type: `(info: string) => string` + +- Default: + + +```ts +(info: string): string => + `

${info ? `

${info}

` : ''}\n` +``` + + +- Details: + + A function to render the starting tag of the container. + + The first param is the `info` part of [container syntax](#container-syntax). + + This option will not take effect if you don't specify the [after](#after) option. + +### after + +- Type: `(info: string) => string` + +- Default: + + +```ts +(): string => '
\n' +``` + + +- Details: + + A function to render the ending tag of the container. + + The first param is the `info` part of [container syntax](#container-syntax). + + This option will not take effect if you don't specify the [before](#before) option. + +### render + +- Type: + +```ts +type MarkdownItContainerRenderFunction = ( + tokens: Token[], + index: number, + options: any, + env: MarkdownEnv, + self: Renderer, +) => string +``` + +- Details: + + The `render` option of [markdown-it-container](https://github.com/markdown-it/markdown-it-container#api). + + This plugin uses a default `render` function. If you specify this option, the default `render` function will be replaced, and the [locales](#locales), [before](#before) and [after](#after) options will be ignored. + +### validate + +- Type: `(params: string) => boolean` + +- Details: + + The `validate` option of [markdown-it-container](https://github.com/markdown-it/markdown-it-container#api). + +### marker + +- Type: `string` + +- Details: + + The `marker` option of [markdown-it-container](https://github.com/markdown-it/markdown-it-container#api). diff --git a/docs/plugins/docsearch.md b/docs/plugins/docsearch.md new file mode 100644 index 0000000000..0b43755326 --- /dev/null +++ b/docs/plugins/docsearch.md @@ -0,0 +1,411 @@ +# docsearch + + + +Integrate [Algolia DocSearch](https://docsearch.algolia.com/) into VuePress, which can provide search to your documentation site. + +::: tip +Default theme will add DocSearch to the navbar once you configure this plugin correctly. + +This plugin may not be used directly in other themes, so you'd better refer to the documentation of your theme for more details. +::: + +## Usage + +```bash +npm i -D @vuepress/plugin-docsearch@next +``` + +```ts +import { docsearchPlugin } from '@vuepress/plugin-docsearch' + +export default { + plugins: [ + docsearchPlugin({ + // options + }), + ], +} +``` + +## Get Search Index + +You need to [submit the URL of your site](https://docsearch.algolia.com/apply/) to join the DocSearch program. The DocSearch team will send [apiKey](#apikey) and [indexName](#indexname) to your email once the index is generated. Then you can configure this plugin to enable DocSearch in VuePress. + +Alternatively, you can [run your own crawler](https://docsearch.algolia.com/docs/run-your-own/) to generate the index, and then use your own [appId](#appId), [apiKey](#apikey) and [indexName](#indexname) to configure this plugin. + +::: details Official crawler config + +```js{35-50,59} +new Crawler({ + appId: 'YOUR_APP_ID', + apiKey: 'YOUR_API_KEY', + rateLimit: 8, + startUrls: [ + // These are urls which algolia start to craw + // If your site is divided in to mutiple parts, + // you may want to set mutiple entry links + 'https://YOUR_WEBSITE_URL/', + ], + sitemaps: [ + // if you are using sitemap plugins (e.g.: vuepress-plugin-sitemap2), you may provide one + 'https://YOUR_WEBSITE_URL/sitemap.xml', + ], + ignoreCanonicalTo: false, + exclusionPatterns: [ + // You can use this to stop algolia crawing some paths + ], + discoveryPatterns: [ + // These are urls which algolia looking for, + 'https://YOUR_WEBSITE_URL/**', + ], + // Crawler schedule, set it according to your docs update frequency + schedule: 'at 02:00 every 1 day', + actions: [ + // you may have mutiple actions, especially when you are deploying mutiple docs under one domain + { + // name the index with name you like + indexName: 'YOUR_INDEX_NAME', + // paths where the index take effect + pathsToMatch: ['https://YOUR_WEBSITE_URL/**'], + // controls how algolia extracts records from your site + recordExtractor: ({ $, helpers }) => { + // options for @vuepress/theme-default + return helpers.docsearch({ + recordProps: { + lvl0: { + selectors: '.sidebar-heading.active', + defaultValue: 'Documentation', + }, + lvl1: '.theme-default-content h1', + lvl2: '.theme-default-content h2', + lvl3: '.theme-default-content h3', + lvl4: '.theme-default-content h4', + lvl5: '.theme-default-content h5', + lvl6: '.theme-default-content h6', + content: '.theme-default-content p, .theme-default-content li', + }, + indexHeadings: true, + }) + }, + }, + ], + initialIndexSettings: { + // controls how index are initialized + // only has effects before index are initialize + // you may need to delete your index and recraw after modification + YOUR_INDEX_NAME: { + attributesForFaceting: ['type', 'lang'], + attributesToRetrieve: ['hierarchy', 'content', 'anchor', 'url'], + attributesToHighlight: ['hierarchy', 'hierarchy_camel', 'content'], + attributesToSnippet: ['content:10'], + camelCaseAttributes: ['hierarchy', 'hierarchy_radio', 'content'], + searchableAttributes: [ + 'unordered(hierarchy_radio_camel.lvl0)', + 'unordered(hierarchy_radio.lvl0)', + 'unordered(hierarchy_radio_camel.lvl1)', + 'unordered(hierarchy_radio.lvl1)', + 'unordered(hierarchy_radio_camel.lvl2)', + 'unordered(hierarchy_radio.lvl2)', + 'unordered(hierarchy_radio_camel.lvl3)', + 'unordered(hierarchy_radio.lvl3)', + 'unordered(hierarchy_radio_camel.lvl4)', + 'unordered(hierarchy_radio.lvl4)', + 'unordered(hierarchy_radio_camel.lvl5)', + 'unordered(hierarchy_radio.lvl5)', + 'unordered(hierarchy_radio_camel.lvl6)', + 'unordered(hierarchy_radio.lvl6)', + 'unordered(hierarchy_camel.lvl0)', + 'unordered(hierarchy.lvl0)', + 'unordered(hierarchy_camel.lvl1)', + 'unordered(hierarchy.lvl1)', + 'unordered(hierarchy_camel.lvl2)', + 'unordered(hierarchy.lvl2)', + 'unordered(hierarchy_camel.lvl3)', + 'unordered(hierarchy.lvl3)', + 'unordered(hierarchy_camel.lvl4)', + 'unordered(hierarchy.lvl4)', + 'unordered(hierarchy_camel.lvl5)', + 'unordered(hierarchy.lvl5)', + 'unordered(hierarchy_camel.lvl6)', + 'unordered(hierarchy.lvl6)', + 'content', + ], + distinct: true, + attributeForDistinct: 'url', + customRanking: [ + 'desc(weight.pageRank)', + 'desc(weight.level)', + 'asc(weight.position)', + ], + ranking: [ + 'words', + 'filters', + 'typo', + 'attribute', + 'proximity', + 'exact', + 'custom', + ], + highlightPreTag: '', + highlightPostTag: '', + minWordSizefor1Typo: 3, + minWordSizefor2Typos: 7, + allowTyposOnNumericTokens: false, + minProximity: 1, + ignorePlurals: true, + advancedSyntax: true, + attributeCriteriaComputedByMinProximity: true, + removeWordsIfNoResults: 'allOptional', + }, + }, +}) +``` + +The above `recordProps` is the configuration used for the default theme. You can modify them according to the theme you are using. + +Notice that the `initialIndexSettings.YOUR_INDEX_NAME.attributesForFaceting` fields must include `'lang'` to make this plugin work properly. +::: + +::: tip +If you are not using default theme, or you meet any problems when using docsearch, you can also check the above example crawler config, and ahead to [Algolia Crawler](https://crawler.algolia.com/admin/crawlers/), and edit your config with 'Editor' panel in project sidebar. +::: + +## Options + +### apiKey + +- Type: `string` + +- Required: `true` + +- Details: + + The `apiKey` that you received from the DocSearch team, or generated by yourself. + +- Also see: + - [DocSearch > Options > apiKey](https://docsearch.algolia.com/docs/api#apikey) + +### indexName + +- Type: `string` + +- Required: `true` + +- Details: + + The `indexName` that you received from the DocSearch team, or generated by yourself. + +- Also see: + - [DocSearch > Options > indexName](https://docsearch.algolia.com/docs/api#indexname) + +### appId + +- Type: `string` + +- Required: `true` + +- Details: + + It defines your own application ID. + +- Also see: + - [DocSearch > Options > appId](https://docsearch.algolia.com/docs/api#appid) + +### searchParameters + +- Type: `SearchParameters` + +- Details: + + Parameters of Algolia Search API. + +- Also see: + - [DocSearch > Options > searchParameters](https://docsearch.algolia.com/docs/api/#searchparameters) + - [Algolia > Search API Parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/) + +### placeholder + +- Type: `string` + +- Default: `'Search docs'` + +- Details: + + The placeholder attribute of the search input. + +- Also see: + - [DocSearch > Options > placeholder](https://docsearch.algolia.com/docs/api/#placeholder) + +### disableUserPersonalization + +- Type: `boolean` + +- Default: `false` + +- Details: + + Whether to disable all personalized features: recent searches, favorite searches, etc. + +- Also see: + - [DocSearch > Options > disableUserPersonalization](https://docsearch.algolia.com/docs/api/#disableuserpersonalization) + +### initialQuery + +- Type: `string` + +- Details: + + The initial query when the modal opens. + +- Also see: + - [DocSearch > Options > initialQuery](https://docsearch.algolia.com/docs/api/#initialquery) + +### translations + +- Type: `Partial` + +- Details: + + Allow replacing the default text in the DocSearch button or modal. + +- Also see: + - [DocSearch > Options > translations](https://docsearch.algolia.com/docs/api/#translations) + +### locales + +- Type: `Record` + +- Details: + + Options of this plugin in different locales. + + All other options of this plugin are acceptable in locale config. + +- Example: + +```ts +export default { + plugins: [ + docsearchPlugin({ + appId: '', + apiKey: '', + indexName: '', + locales: { + '/': { + placeholder: 'Search Documentation', + translations: { + button: { + buttonText: 'Search Documentation', + }, + }, + }, + '/zh/': { + placeholder: '搜索文档', + translations: { + button: { + buttonText: '搜索文档', + }, + }, + }, + }, + }), + ], +} +``` + +- Also see: + - [Guide > I18n](../../guide/i18n.md) + +### indexBase + +- Type: `string` + +- Default: [base](../config.md#base) + +- Details: + + The base path of the search index. + + If you are deploying your site to multiple domains, you don't need to submit all of them to DocSearch and generate search index separately. You could choose one of the domains as the _index domain_, and only submit the _index domain_ to Docsearch for crawling search index. Then, you could reuse the search index across all deployments. + + However, if the [base](../config.md#base) of your deployments are different for different domains, you need to set the option to the [base](../config.md#base) of your _index domain_, so that other deployments could reuse the search index correctly. + +### injectStyles + +- Type: `boolean` + +- Default: `true` + +- Details: + + Whether to inject the default styles of DocSearch or not. + + If you think the default styles of DocSearch is not compatible with your site, you can try to override the default styles, or set this option to `false` to totally exclude the default styles. + + When this option is disabled, you need to import your own styles for DocSearch. Also notice that all styles customization in [Styles](#styles) section would be unavailable. + +## Styles + +You can customize styles via CSS variables that provided by [@docsearch/css](https://docsearch.algolia.com/docs/styling): + +```css +:root { + --docsearch-primary-color: rgb(84, 104, 255); + --docsearch-text-color: rgb(28, 30, 33); + --docsearch-spacing: 12px; + --docsearch-icon-stroke-width: 1.4; + --docsearch-highlight-color: var(--docsearch-primary-color); + --docsearch-muted-color: rgb(150, 159, 175); + --docsearch-container-background: rgba(101, 108, 133, 0.8); + --docsearch-logo-color: rgba(84, 104, 255); + + /* modal */ + --docsearch-modal-width: 560px; + --docsearch-modal-height: 600px; + --docsearch-modal-background: rgb(245, 246, 247); + --docsearch-modal-shadow: inset 1px 1px 0 0 rgba(255, 255, 255, 0.5), 0 3px + 8px 0 rgba(85, 90, 100, 1); + + /* searchbox */ + --docsearch-searchbox-height: 56px; + --docsearch-searchbox-background: rgb(235, 237, 240); + --docsearch-searchbox-focus-background: #fff; + --docsearch-searchbox-shadow: inset 0 0 0 2px var(--docsearch-primary-color); + + /* hit */ + --docsearch-hit-height: 56px; + --docsearch-hit-color: rgb(68, 73, 80); + --docsearch-hit-active-color: #fff; + --docsearch-hit-background: #fff; + --docsearch-hit-shadow: 0 1px 3px 0 rgb(212, 217, 225); + + /* key */ + --docsearch-key-gradient: linear-gradient( + -225deg, + rgb(213, 219, 228) 0%, + rgb(248, 248, 248) 100% + ); + --docsearch-key-shadow: inset 0 -2px 0 0 rgb(205, 205, 230), inset 0 0 1px 1px + #fff, 0 1px 2px 1px rgba(30, 35, 90, 0.4); + + /* footer */ + --docsearch-footer-height: 44px; + --docsearch-footer-background: #fff; + --docsearch-footer-shadow: 0 -1px 0 0 rgb(224, 227, 232), 0 -3px 6px 0 rgba(69, 98, 155, 0.12); +} +``` + +## Components + +### Docsearch + +- Details: + + This plugin will register a `` component globally, and you can use it without any props. + + Put this component to where you want to place the docsearch button. For example, default theme puts this component to the end of the navbar. + +::: tip +This component is mainly used for theme development. You don't need to use it directly in most cases. +::: diff --git a/docs/plugins/external-link-icon.md b/docs/plugins/external-link-icon.md new file mode 100644 index 0000000000..c57f43749f --- /dev/null +++ b/docs/plugins/external-link-icon.md @@ -0,0 +1,87 @@ +# external-link-icon + + + +This plugin will add an icon to the external link in your markdown content, i.e. + +This plugin has been integrated into the default theme. + +## Usage + +```bash +npm i -D @vuepress/plugin-external-link-icon@next +``` + +```ts +import { externalLinkIconPlugin } from '@vuepress/plugin-external-link-icon' + +export default { + plugins: [ + externalLinkIconPlugin({ + // options + }), + ], +} +``` + +## Options + +### locales + +- Type: `Record` + +- Details: + + The a11y text of the external link icon in different locales. + + If this option is not specified, it will fallback to default text. + +- Example: + +```ts +export default { + plugins: [ + externalLinkIconPlugin({ + locales: { + '/': { + openInNewWindow: 'open in new window', + }, + '/zh/': { + openInNewWindow: '在新窗口打开', + }, + }, + }), + ], +} +``` + +- Also see: + - [Guide > I18n](../../guide/i18n.md) + +## Frontmatter + +### externalLinkIcon + +- Type: `boolean` + +- Details: + + Whether to append an external link icon to external links in current page. + +## Styles + +You can customize the style of the external link icon via CSS variables: + +@[code css](@vuepress/plugin-external-link-icon/src/client/styles/vars.css) + +## Components + +### ExternalLinkIcon + +- Details: + + This plugin will register a `` component globally, and you can use it without any props. + +::: tip +This component is mainly used for theme development. You don't need to use it directly in most cases. +::: diff --git a/docs/plugins/git.md b/docs/plugins/git.md new file mode 100644 index 0000000000..059c8ab17f --- /dev/null +++ b/docs/plugins/git.md @@ -0,0 +1,145 @@ +# git + + + +This plugin will collect git information of your pages, including the created and updated time, the contributors, etc. + +The [lastUpdated](../default-theme/config.md#lastupdated) and [contributors](../default-theme/config.md#contributors) of default theme is powered by this plugin. + +This plugin is mainly used to develop themes. You won't need to use it directly in most cases. + +## Usage + +```bash +npm i -D @vuepress/plugin-git@next +``` + +```ts +import { gitPlugin } from '@vuepress/plugin-git' + +export default { + plugins: [ + gitPlugin({ + // options + }), + ], +} +``` + +## Git Repository + +This plugin requires your project to be inside a [Git Repository](https://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository), so that it can collect information from the commit history. + +You should ensure all commits are available when building your site. For example, CI workflows usually clone your repository with [--depth 1](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt) to avoid fetching all commits, so you should disable the behavior to make this plugin work properly in CI. + +::: warning +This plugin will significantly slow down the speed of data preparation, especially when you have a lot of pages. You can consider disabling this plugin in `dev` mode to get better development experience. +::: + +## Options + +### createdTime + +- Type: `boolean` + +- Default: `true` + +- Details: + + Whether to collect page created time or not. + +### updatedTime + +- Type: `boolean` + +- Default: `true` + +- Details: + + Whether to collect page updated time or not. + +### contributors + +- Type: `boolean` + +- Default: `true` + +- Details: + + Whether to collect page contributors or not. + +## Frontmatter + +### gitInclude + +- Type: `string[]` + +- Details: + + An array of relative paths to be included when calculating page data. + +- Example: + +```md +--- +gitInclude: + - relative/path/to/file1 + - relative/path/to/file2 +--- +``` + +## Page Data + +This plugin will add a `git` field to page data. + +After using this plugin, you can get the collected git information in page data: + +```ts +import type { GitPluginPageData } from '@vuepress/plugin-git' +import { usePageData } from 'vuepress/client' + +export default { + setup() { + const page = usePageData() + console.log(page.value.git) + }, +} +``` + +### git.createdTime + +- Type: `number` + +- Details: + + Unix timestamp in milliseconds of the first commit of the page. + + This attribute would take the minimum of the first commit timestamps of the current page and the files listed in [gitInclude](#gitinclude). + +### git.updatedTime + +- Type: `number` + +- Details: + + Unix timestamp in milliseconds of the last commit of the page. + + This attribute would take the maximum of the last commit timestamps of the current page and the files listed in [gitInclude](#gitinclude). + +### git.contributors + +- Type: `GitContributor[]` + +```ts +interface GitContributor { + name: string + email: string + commits: number +} +``` + +- Details: + + The contributors information of the page. + + This attribute would also include contributors to the files listed in [gitInclude](#gitinclude). diff --git a/docs/plugins/google-analytics.md b/docs/plugins/google-analytics.md new file mode 100644 index 0000000000..c35b267ddd --- /dev/null +++ b/docs/plugins/google-analytics.md @@ -0,0 +1,78 @@ +# google-analytics + + + +Integrate [Google Analytics](https://analytics.google.com/) into VuePress. + +This plugin will import [gtag.js](https://developers.google.com/analytics/devguides/collection/gtagjs) for [Google Analytics 4](https://support.google.com/analytics/answer/10089681). + +## Usage + +```bash +npm i -D @vuepress/plugin-google-analytics@next +``` + +```ts +import { googleAnalyticsPlugin } from '@vuepress/plugin-google-analytics' + +export default { + plugins: [ + googleAnalyticsPlugin({ + // options + }), + ], +} +``` + +## Reporting Events + +Google Analytics will [automatically collect some events](https://support.google.com/analytics/answer/9234069), such as `page_view`, `first_visit`, etc. + +So if you only want to collect some basic data of your site, you don't need to do anything else except setting the [Measurement ID](#id) correctly. + +After using this plugin, the global `gtag()` function is available on the `window` object, and you can use it for [custom events reporting](https://developers.google.com/analytics/devguides/collection/ga4/events). + +## Options + +### id + +- Type: `string` + +- Details: + + The Measurement ID of Google Analytics 4, which should start with `'G-'`. + + You can follow the instructions [here](https://support.google.com/analytics/answer/9539598) to find your Measurement ID. Notice the difference between Google Analytics 4 Measurement ID (i.e. "G-" ID) and Universal Analytics Tracking ID (i.e. "UA-" ID). + +- Example: + +```ts +export default { + plugins: [ + googleAnalyticsPlugin({ + id: 'G-XXXXXXXXXX', + }), + ], +} +``` + +### debug + +- Type: `boolean` + +- Details: + + Set to `true` to enable sending events to DebugView. [See more information on DebugView](https://support.google.com/analytics/answer/7201382). + +- Example: + +```ts +export default { + plugins: [ + googleAnalyticsPlugin({ + id: 'G-XXXXXXXXXX', + debug: true, + }), + ], +} +``` diff --git a/docs/plugins/medium-zoom.md b/docs/plugins/medium-zoom.md new file mode 100644 index 0000000000..362dce2544 --- /dev/null +++ b/docs/plugins/medium-zoom.md @@ -0,0 +1,100 @@ +# medium-zoom + + + +Integrate [medium-zoom](https://github.com/francoischalifour/medium-zoom#readme) into VuePress, which can provide the ability to zoom images. + +This plugin has been integrated into the default theme. + +## Usage + +```bash +npm i -D @vuepress/plugin-medium-zoom@next +``` + +```ts +import { mediumZoomPlugin } from '@vuepress/plugin-medium-zoom' + +export default { + plugins: [ + mediumZoomPlugin({ + // options + }), + ], +} +``` + +## Options + +### selector + +- Type: `string` + +- Default: `':not(a) > img'` + +- Details: + + Selector of zoomable images. + + By default this plugin will make all images zoomable except those inside `` tags. + +### delay + +- Type: `number` + +- Default: `500` + +- Details: + + Delay in milliseconds. + + After navigating to a new page, this plugin will make images zoomable with a delay. + +### zoomOptions + +- Type: `Object` + +- Details: + + Options for medium-zoom. + +- Also see: + - [medium-zoom > Options](https://github.com/francoischalifour/medium-zoom#options) + +## Styles + +You can customize most of the zoom styles via [zoomOptions](#zoomoptions), while this plugin also provides some CSS variables for additional customization: + +@[code css](@vuepress/plugin-medium-zoom/src/client/styles/vars.css) + +## Composition API + +### useMediumZoom + +- Details: + + Returns the `Zoom` instance that used by this plugin, so that you can use the instance [methods](https://github.com/francoischalifour/medium-zoom#methods) directly. + + This plugin will make images zoomable after navigating to current page. But if you are going to add new images dynamically, you may need this method to make those new images zoomable, too. + + This plugin adds an extra `refresh` method on the `Zoom` instance, which will call `zoom.detach()` then `zoom.attach()` with the [selector](#selector) as the default parameter. It will help you to refresh the zoomable images for current page. + +- Example: + +```ts +import { nextTick } from 'vue' +import { useMediumZoom } from '@vuepress/plugin-medium-zoom/client' + +export default { + setup() { + const zoom = useMediumZoom() + + // ... do something to add new images in current page + + // then you may need to call `refresh` manually to make those new images zoomable + nextTick(() => { + zoom.refresh() + }) + }, +} +``` diff --git a/docs/plugins/nprogress.md b/docs/plugins/nprogress.md new file mode 100644 index 0000000000..2f501345a9 --- /dev/null +++ b/docs/plugins/nprogress.md @@ -0,0 +1,35 @@ +--- +title: nprogress +--- + + + + + +# nprogress Plugin + + + +Integrate [nprogress](https://github.com/rstacruz/nprogress) into VuePress, which can provide a progress bar when navigating to another page. + +This plugin has been integrated into the default theme. + +## Usage + +```bash +npm i -D @vuepress/plugin-nprogress@next +``` + +```ts +import { nprogressPlugin } from '@vuepress/plugin-nprogress' + +export default { + plugins: [nprogressPlugin()], +} +``` + +## Styles + +You can customize the style of the progress bar via CSS variables: + +@[code css](@vuepress/plugin-nprogress/src/client/styles/vars.css) diff --git a/docs/plugins/palette.md b/docs/plugins/palette.md new file mode 100644 index 0000000000..a5a5ecb842 --- /dev/null +++ b/docs/plugins/palette.md @@ -0,0 +1,203 @@ +# palette + + + +Provide palette support for your theme. + +This plugin is mainly used to develop themes, and has been integrated into the default theme. You won't need to use it directly in most cases. + +For theme authors, this plugin will help you to provide styles customization for users. + +## Usage + +```bash +npm i -D @vuepress/plugin-palette@next +``` + +```ts +import { palettePlugin } from '@vuepress/plugin-palette' + +export default { + plugins: [ + palettePlugin({ + // options + }), + ], +} +``` + +## Palette and Style + +This plugin will provide a `@vuepress/plugin-palette/palette` (palette file) and a `@vuepress/plugin-palette/style` (style file) to be imported in your theme styles. + +The palette file is used for defining style variables, so it's likely to be imported at the beginning of your theme styles. For example, users can define [CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties), [SASS variables](https://sass-lang.com/documentation/variables), [LESS variables](http://lesscss.org/features/#variables-feature) or [Stylus variables](https://stylus-lang.com/docs/variables.html) in the palette, and then you can use those variables in your theme styles. + +The style file is used for overriding the default styles or adding extra styles, so it's likely to be imported at the end of your theme styles. + +## Usage + +Use this plugin in your theme, assuming you are using SASS: + +```ts +export default { + // ... + plugins: [palettePlugin({ preset: 'sass' })], +} +``` + +### Usage of Palette + +Import the plugin's palette file where your theme needs to use the corresponding variables, such as in the `Layout.vue` file: + +```vue + + + +``` + +Then users can customize variables in `.vuepress/styles/palette.scss`: + +```scss +$color: green; +``` + +### Usage of Style + +Import the plugin's style file after your theme's styles, for example, in the `clientConfigFile`: + +```ts +// import your theme's style file +import 'path/to/your/theme/style' +// import the plugin's style file +import '@vuepress/plugin-palette/style' +``` + +Then users can add extra styles in `.vuepress/styles/index.scss` and override the default styles of your theme: + +```scss +h1 { + font-size: 2.5rem; +} +``` + +## Options + +### preset + +- Type: `'css' | 'sass' | 'less' | 'stylus'` + +- Default: `'css'` + +- Details: + + Set preset for other options. + + If you don't need advanced customization of the plugin, it's recommended to only set this option and omit other options. + +### userPaletteFile + +- Type: `string` + +- Default: + + - css: `'.vuepress/styles/palette.css'` + - sass: `'.vuepress/styles/palette.scss'` + - less: `'.vuepress/styles/palette.less'` + - stylus: `'.vuepress/styles/palette.styl'` + +- Details: + + File path of the user palette file, relative to source directory. + + The default value depends on the [preset](#preset) option. + + The file is where users define style variables, and it's recommended to keep the default file path as a convention. + +### tempPaletteFile + +- Type: `string` + +- Default: + + - css: `'styles/palette.css'` + - sass: `'styles/palette.scss'` + - less: `'styles/palette.less'` + - stylus: `'styles/palette.styl'` + +- Details: + + File path of the generated palette temp file, relative to temp directory. + + The default value depends on the [preset](#preset) option. + + You should import the palette file via `'@vuepress/plugin-palette/palette'` alias, so you don't need to change this option in most cases. + +### userStyleFile + +- Type: `string` + +- Default: + + - css: `'.vuepress/styles/index.css'` + - sass: `'.vuepress/styles/index.scss'` + - less: `'.vuepress/styles/index.less'` + - stylus: `'.vuepress/styles/index.styl'` + +- Details: + + File path of the user style file, relative to source directory. + + The default value depends on the [preset](#preset) option. + + The file is where users override default styles or add extra styles, and it's recommended to keep the default file path as a convention. + +### tempStyleFile + +- Type: `string` + +- Default: + + - css: `'styles/index.css'` + - sass: `'styles/index.scss'` + - less: `'styles/index.less'` + - stylus: `'styles/index.styl'` + +- Details: + + File path of the generated style temp file, relative to temp directory. + + The default value depends on the [preset](#preset) option. + + You should import the style file via `'@vuepress/plugin-palette/style'` alias, so you don't need to change this option in most cases. + +### importCode + +- Type: `(filePath: string) => string` + +- Default: + + - css: `` (filePath) => `@import '${filePath}';\n` `` + - sass: `` (filePath) => `@forward 'file:///${filePath}';\n` `` + - less: `` (filePath) => `@import '${filePath}';\n` `` + - stylus: `` (filePath) => `@require '${filePath}';\n` `` + +- Details: + + Function to generate import code. + + The default value depends on the [preset](#preset) option. + + This option is used for generating [tempPaletteFile](#temppalettefile) and [tempStyleFile](#tempstylefile), and you don't need to change this option in most cases. diff --git a/docs/plugins/prismjs.md b/docs/plugins/prismjs.md new file mode 100644 index 0000000000..d72625f222 --- /dev/null +++ b/docs/plugins/prismjs.md @@ -0,0 +1,43 @@ +# prismjs + + + +This plugin will enable syntax highlighting for markdown code fence with [Prism.js](https://prismjs.com/). + +This plugin has been integrated into the default theme. + +Notice that this plugin would only tokenize the code fence without adding styles. When using it with a custom theme, you may need to choose and import Prism.js style theme yourself. + +## Usage + +```bash +npm i -D @vuepress/plugin-prismjs@next +``` + +```ts +import { prismjsPlugin } from '@vuepress/plugin-prismjs' + +export default { + plugins: [ + prismjsPlugin({ + // options + }), + ], +} +``` + +## Options + +### preloadLanguages + +- Type: `string[]` + +- Default: `['markdown', 'jsdoc', 'yaml']` + +- Details: + + Languages to preload. + + By default, languages will be loaded on demand when parsing markdown files. + + However, Prism.js has [some potential issues](https://github.com/PrismJS/prism/issues/2716) about loading languages dynamically. To avoid them, you can preload languages via this option. diff --git a/docs/plugins/pwa-popup.md b/docs/plugins/pwa-popup.md new file mode 100644 index 0000000000..f305e526f6 --- /dev/null +++ b/docs/plugins/pwa-popup.md @@ -0,0 +1,72 @@ +# pwa-popup + + + +Provide a popup component for users to activate the new PWA service worker manually. + +This plugin must be used together with [pwa plugin](./pwa.md), and the `skipWaiting` option must not be set to `true`. + +When the new service worker is ready, a popup will appear in the right bottom of the page to ask users to activate the waiting service worker. + +## Usage + +```bash +npm i -D @vuepress/plugin-pwa-popup@next +``` + +```ts +import { pwaPlugin } from '@vuepress/plugin-pwa' +import { pwaPopupPlugin } from '@vuepress/plugin-pwa-popup' + +export default { + plugins: [ + pwaPlugin(), + pwaPopupPlugin({ + // options + }), + ], +} +``` + +## Options + +### locales + +- Type: `Record` + +- Details: + + The messages of the popup in different locales. + + If this option is not specified, it will fallback to default messages. + +- Example: + +```ts +export default { + plugins: [ + pwaPlugin(), + pwaPopupPlugin({ + locales: { + '/': { + message: 'New content is available.', + buttonText: 'Refresh', + }, + '/zh/': { + message: '发现新内容可用', + buttonText: '刷新', + }, + }, + }), + ], +} +``` + +- Also see: + - [Guide > I18n](../../guide/i18n.md) + +## Styles + +You can customize the style of the popup via CSS variables: + +@[code css](@vuepress/plugin-pwa-popup/src/client/styles/vars.css) diff --git a/docs/plugins/pwa.md b/docs/plugins/pwa.md new file mode 100644 index 0000000000..e94f76971c --- /dev/null +++ b/docs/plugins/pwa.md @@ -0,0 +1,173 @@ +# pwa + + + +Make your VuePress site a [Progressive Web Application (PWA)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps). + +This plugin uses [workbox-build](https://developers.google.com/web/tools/workbox/modules/workbox-build) to generate service worker file, and uses [register-service-worker](https://github.com/yyx990803/register-service-worker) to register service worker. + +## Usage + +```bash +npm i -D @vuepress/plugin-pwa@next +``` + +```ts +import { pwaPlugin } from '@vuepress/plugin-pwa' + +export default { + plugins: [ + pwaPlugin({ + // options + }), + ], +} +``` + +## Web App Manifests + +To make your website fully compliant with PWA, you need to create a [Web app manifests](https://developer.mozilla.org/en-US/docs/Web/Manifest) file and set the icons, colors, etc. for your PWA. + +You need to put your manifest file and icons into the [public files directory](../../guide/assets.md#public-files). In the following example, we assume that you are using the default public directory `.vuepress/public`. + +1. Create manifest file + +Typically `.vuepress/public/manifest.webmanifest`: + +```json +{ + "name": "VuePress", + "short_name": "VuePress", + "description": "Vue-powered Static Site Generator", + "start_url": "/index.html", + "display": "standalone", + "background_color": "#fff", + "theme_color": "#3eaf7c", + "icons": [ + { + "src": "/images/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/images/icons/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ] +} +``` + +2. Generate PWA icons + +To make your PWA more accessible, you need to generate some icons, and put them inside the public directory. + +Make sure the path of icons matches the `icons` field in your manifest file: + +- `.vuepress/public/images/icons/android-chrome-192x192.png` +- `.vuepress/public/images/icons/android-chrome-384x384.png` + +::: tip +Some tools can help to do that. For example, [Favicon Generator](https://realfavicongenerator.net/) would help you to generate icons together with a sample manifest file. +::: + +3. Set tags in head + +You also need to set some tags via [head](../config.md#head) option to [deploy the manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest#deploying_a_manifest_with_the_link_tag): + +```ts +export default { + head: [ + ['link', { rel: 'manifest', href: '/manifest.webmanifest' }], + ['meta', { name: 'theme-color', content: '#3eaf7c' }], + // ...other tags + ], +} +``` + +## Options + +This plugin accepts all parameters of workbox-build's [generateSW method](https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-build#.generateSW) in its options, except `globDirectory` and `swDest`. + +For example, you can set `skipWaiting: true` to auto activate the new service worker once it is ready: + +```ts +export default { + plugins: [ + pwaPlugin({ + skipWaiting: true, + }), + ], +} +``` + +But if you omit `skipWaiting` or set it to `false`, you have to activate the new service worker manually: + +- For users, you can use our [pwa-popup](./pwa-popup.md) plugin together. +- For developers, you can use our [composition API](#composition-api) to take control of the service worker behavior. + +### serviceWorkerFilename + +- Type: `string` + +- Default: `'service-worker.js'` + +- Details: + + File path of the generated service worker file, which is relative to the [dest](../config.md#dest) directory. + + The service worker file will only be generated in `build` mode. + +## Composition API + +### usePwaEvent + +- Details: + + Returns the event emitter of this plugin. + + You can add listener function to events that provided by [register-service-worker](https://github.com/yyx990803/register-service-worker). + +- Example: + +```ts +import { usePwaEvent } from '@vuepress/plugin-pwa/client' + +export default { + setup() { + const event = usePwaEvent() + event.on('ready', (registration) => { + console.log('Service worker is active.') + }) + }, +} +``` + +### useSkipWaiting + +- Parameters: + +| Parameter | Type | Description | +| ------------ | --------------------------- | -------------------------------------------------------- | +| registration | `ServiceWorkerRegistration` | The registration of the service worker you want activate | + +- Details: + + Call [skipWaiting()](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/skipWaiting) to activate the waiting service worker. + +- Example: + +```ts +import { usePwaEvent, useSkipWaiting } from '@vuepress/plugin-pwa/client' + +export default { + setup() { + const event = usePwaEvent() + event.on('updated', (registration) => { + console.log('The waiting service worker is available.') + // activate the waiting service worker + useSkipWaiting(registration) + }) + }, +} +``` diff --git a/docs/plugins/register-components.md b/docs/plugins/register-components.md new file mode 100644 index 0000000000..4515860809 --- /dev/null +++ b/docs/plugins/register-components.md @@ -0,0 +1,135 @@ +# register-components + + + +Register Vue components from component files or directory automatically. + +## Usage + +```bash +npm i -D @vuepress/plugin-register-components@next +``` + +```ts +import { registerComponentsPlugin } from '@vuepress/plugin-register-components' + +export default { + plugins: [ + registerComponentsPlugin({ + // options + }), + ], +} +``` + +## Options + +### components + +- Type: `Record` + +- Default: `{}` + +- Details: + + An object that defines name of components and their corresponding file path. + + The key will be used as the component name, and the value is an absolute path of the component file. + + If the component name from this option conflicts with [componentsDir](#componentsdir) option, this option will have a higher priority. + +- Example: + +```ts +import { getDirname, path } from 'vuepress/utils' + +const __dirname = getDirname(import.meta.url) + +export default { + plugins: [ + registerComponentsPlugin({ + components: { + FooBar: path.resolve(__dirname, './components/FooBar.vue'), + }, + }), + ], +} +``` + +### componentsDir + +- Type: `string | null` + +- Default: `null` + +- Details: + + Absolute path to the components directory. + + Files in this directory which are matched with [componentsPatterns](#componentspatterns) will be registered as Vue components automatically. + +- Example: + +```ts +import { getDirname, path } from 'vuepress/utils' + +const __dirname = getDirname(import.meta.url) + +export default { + plugins: [ + registerComponentsPlugin({ + componentsDir: path.resolve(__dirname, './components'), + }), + ], +} +``` + +Components directory: + +```bash +components +├─ FooBar.vue +└─ Baz.vue +``` + +Components will be registered like this: + +```ts +import { defineAsyncComponent } from 'vue' + +app.component( + 'FooBar', + defineAsyncComponent(() => import('/path/to/components/FooBar.vue')), +) + +app.component( + 'Baz', + defineAsyncComponent(() => import('/path/to/components/Baz.vue')), +) +``` + +### componentsPatterns + +- Type: `string[]` + +- Default: `['**/*.vue']` + +- Details: + + Patterns to match component files using [globby](https://github.com/sindresorhus/globby). + + The patterns are relative to [componentsDir](#componentsdir). + +### getComponentName + +- Type: `(filename: string) => string` + +- Default: `(filename) => path.trimExt(filename.replace(/\/|\\/g, '-'))` + +- Details: + + A function to get component name from the filename. + + It will only take effect on the files in the [componentsDir](#componentsdir) which are matched with the [componentsPatterns](#componentspatterns). + + Notice that the `filename` is a filepath relative to [componentsDir](#componentsdir). diff --git a/docs/plugins/search.md b/docs/plugins/search.md new file mode 100644 index 0000000000..f563b8a757 --- /dev/null +++ b/docs/plugins/search.md @@ -0,0 +1,166 @@ +# search + + + +Provide local search to your documentation site. + +::: tip +Default theme will add search box to the navbar once you configure this plugin correctly. + +This plugin may not be used directly in other themes, so you'd better refer to the documentation of your theme for more details. +::: + +## Usage + +```bash +npm i -D @vuepress/plugin-search@next +``` + +```ts +import { searchPlugin } from '@vuepress/plugin-search' + +export default { + plugins: [ + searchPlugin({ + // options + }), + ], +} +``` + +## Local Search Index + +This plugin will generate search index from your pages locally, and load the search index file when users enter your site. In other words, this is a lightweight built-in search which does not require any external requests. + +However, when your site has a large number of pages, the size of search index file would be very large, which could slow down the page loading speed. In this case, we recommend you to use a more professional solution - [docsearch](./docsearch.md). + +## Options + +### locales + +- Type: `Record` + +- Details: + + The text of the search box in different locales. + + If this option is not specified, it will fallback to default text. + +- Example: + +```ts +export default { + plugins: [ + searchPlugin({ + locales: { + '/': { + placeholder: 'Search', + }, + '/zh/': { + placeholder: '搜索', + }, + }, + }), + ], +} +``` + +- Also see: + - [Guide > I18n](../../guide/i18n.md) + +### hotKeys + +- Type: `(string | HotKeyOptions)[]` + +@[code ts](@vuepress/plugin-search/src/shared/hotKey.ts) + +- Default: `['s', '/']` + +- Details: + + Specify the [event.key](http://keycode.info/) of the hotkeys. + + When hotkeys are pressed, the search box input will be focused. + + Set to an empty array to disable hotkeys. + +### maxSuggestions + +- Type: `number` + +- Default: `5` + +- Details: + + Specify the maximum number of search results. + +### isSearchable + +- Type: `(page: Page) => boolean` + +- Default: `() => true` + +- Details: + + A function to determine whether a page should be included in the search index. + + - Return `true` to include the page. + - Return `false` to exclude the page. + +- Example: + +```ts +export default { + plugins: [ + searchPlugin({ + // exclude the homepage + isSearchable: (page) => page.path !== '/', + }), + ], +} +``` + +### getExtraFields + +- Type: `(page: Page) => string[]` + +- Default: `() => []` + +- Details: + + A function to add extra fields to the search index of a page. + + By default, this plugin will use page title and headers as the search index. This option could help you to add more searchable fields. + +- Example: + +```ts +export default { + plugins: [ + searchPlugin({ + // allow searching the `tags` frontmatter + getExtraFields: (page) => page.frontmatter.tags ?? [], + }), + ], +} +``` + +## Styles + +You can customize the style of the search box via CSS variables: + +@[code css](@vuepress/plugin-search/src/client/styles/vars.css) + +## Components + +### SearchBox + +- Details: + + This plugin will register a `` component globally, and you can use it without any props. + + Put this component to where you want to place the search box. For example, default theme puts this component to the end of the navbar. + +::: tip +This component is mainly used for theme development. You don't need to use it directly in most cases. +::: diff --git a/docs/plugins/shiki.md b/docs/plugins/shiki.md new file mode 100644 index 0000000000..46dabd2977 --- /dev/null +++ b/docs/plugins/shiki.md @@ -0,0 +1,75 @@ +# shiki + + + +This plugin will enable syntax highlighting for markdown code fence with [Shiki](https://shiki.matsu.io/) ([Shikiji](https://shikiji.netlify.app/)). + +::: tip +[Shiki](https://shiki.matsu.io/) is the syntax highlighter being used by VSCode. It has higher fidelity, but it could be slower than [Prism.js](https://prismjs.com/), especially when you have a lot of code blocks. + +You could consider disabling this plugin in `dev` mode to get better development experience. +::: + +## Usage + +```bash +npm i -D @vuepress/plugin-shiki@next +``` + +```ts +import { shikiPlugin } from '@vuepress/plugin-shiki' + +export default { + plugins: [ + shikiPlugin({ + // options + langs: ['ts', 'json', 'vue', 'md', 'bash', 'diff'], + }), + ], +} +``` + +## Options + +### langs + +- Type: `ShikiLang[]` + +- Details: + + Languages of code blocks to be parsed by shikiji. + + This option will be forwarded to `getHighlighter()` method of shikiji. + + You need to provide the languages list you are using explicitly, otherwise shikiji won't load any languages. + +- Also see: + - [shikiji > Languages](https://shikiji.netlify.app/languages) + +### theme + +- Type: `ShikiTheme` + +- Default: `'nord'` + +- Details: + + Theme of shikiji. + + This option will be forwarded to `codeToHtml()` method of shikiji. + +- Also see: + - [shikiji > Themes](https://shikiji.netlify.app/themes) + +### themes + +- Type: `Record<'dark' | 'light', ShikiTheme>` + +- Details: + + Dark / Light Dual themes of shikiji. + + This option will be forwarded to `codeToHtml()` method of shikiji. + +- Also see: + - [shikiji > Dual Themes](https://shikiji.netlify.app/guide/dual-themes) diff --git a/docs/plugins/theme-data.md b/docs/plugins/theme-data.md new file mode 100644 index 0000000000..ecf2ea5a20 --- /dev/null +++ b/docs/plugins/theme-data.md @@ -0,0 +1,118 @@ +# theme-data + + + +Provide client data for your theme, with VuePress [i18n](../../guide/i18n.md) support. + +This plugin is mainly used to develop themes, and has been integrated into the default theme. You won't need to use it directly in most cases. + +For theme authors, this plugin will help you to use the same i18n mechanism as VuePress and the default theme. But if you don't want to provide i18n support, or you want to implement in your own way, you don't need this plugin. + +## Usage + +```bash +npm i -D @vuepress/plugin-theme-data@next +``` + +```ts +import { themeDataPlugin } from '@vuepress/plugin-theme-data' + +export default { + plugins: [ + themeDataPlugin({ + // options + }), + ], +} +``` + +## Options + +### themeData + +- Type: `ThemeData` + +- Default: `{}` + +- Details: + + The theme data object that you want to use in client side. + + You can provide theme data in Node side via this option, and use it in client side via [useThemeData](#useThemeData) and [useThemeLocaleData](#useThemeLocaleData). + +- Example: + +```ts +export default { + plugins: [ + themeDataPlugin({ + themeData: { + foo: 'foo', + locales: { + '/zh/': { + foo: 'zh-foo', + }, + }, + }, + }), + ], +} +``` + +::: warning +The theme data object will be processed by `JSON.stringify()` before forwarding to client side, so you should ensure that you are providing a JSON-friendly object. +::: + +## Composition API + +### useThemeData + +- Details: + + Returns the theme data ref object. + + The value is provided by [themeData](#themeData) option. + +- Example: + +```ts +import { useThemeData } from '@vuepress/plugin-theme-data/client' +import type { ThemeData } from '@vuepress/plugin-theme-data/client' + +type MyThemeData = ThemeData<{ + foo: string +}> + +export default { + setup() { + const themeData = useThemeData() + console.log(themeData.value) + }, +} +``` + +### useThemeLocaleData + +- Details: + + Returns the theme data ref object in current locale. + + The properties of current locale has been merged into the root-level properties. + +- Example: + +```ts +import { useThemeLocaleData } from '@vuepress/plugin-theme-data/client' +import type { ThemeData } from '@vuepress/plugin-theme-data/client' + +type MyThemeData = ThemeData<{ + foo: string +}> + +export default { + setup() { + const themeLocaleData = useThemeLocaleData() + console.log(themeLocaleData.value) + }, +} +``` diff --git a/docs/plugins/toc.md b/docs/plugins/toc.md new file mode 100644 index 0000000000..82ffdf85f0 --- /dev/null +++ b/docs/plugins/toc.md @@ -0,0 +1,172 @@ +# toc + + + +This plugin will provide a table-of-contents (TOC) component. + +## Usage + +```bash +npm i -D @vuepress/plugin-toc@next +``` + +```ts +import { tocPlugin } from '@vuepress/plugin-toc' + +export default { + plugins: [ + tocPlugin({ + // options + }), + ], +} +``` + +## Differences with Markdown TOC Syntax + +Similar to the [Table of Contents Markdown Syntax](../../guide/markdown.md#table-of-contents), the TOC component that provided by this plugin could be used in your markdown content directly: + +```md + + +[[toc]] + + + +``` + +Both of them can be pre-rendered correctly in build mode. However, there are some differences between them. + +The markdown syntax `[[toc]]` could only be used in markdown files. It is parsed by markdown-it, and the generated TOC is static content. + +The component `` could be used in both markdown files and vue files. It is loaded by vue, and the generated TOC is a vue component. + +This plugin could work together with [@vuepress/plugin-active-header-links](./active-header-links.md) by setting the [headerLinkSelector](./active-header-links.md#headerlinkselector) to match the `linkClass` option. When the page scroll to a certain header anchor, this corresponding link will be added `linkActiveClass` class name. + +Therefore, this plugin is more useful for theme developers. + +## Options + +### componentName + +- Type: `string` + +- Default: `'Toc'` + +- Details: + + Specify the name of the TOC component. + +### defaultPropsOptions + +- Type: `Partial` + +- Default: `{}` + +- Details: + + Override the default values of the component [options](#options-1) prop. + +## Component Props + +The TOC component also accepts props for customization. + +```vue + +``` + +### headers + +- Type: `PageHeader[]` + +```ts +interface PageHeader { + level: number + title: string + slug: string + children: PageHeader[] +} +``` + +- Details: + + Specify the headers array to render. + + If this prop is not specified, the headers of current page will be used. + +### options + +- Type: `Partial` + +```ts +interface TocPropsOptions { + containerTag: string + containerClass: string + listClass: string + itemClass: string + linkTag: 'a' | 'RouterLink' + linkClass: string + linkActiveClass: string + linkChildrenActiveClass: string +} +``` + +- Default: + + Following default values can be overridden by [defaultPropsOptions](#defaultpropsoptions). + +```ts +const defaultOptions = { + containerTag: 'nav', + containerClass: 'vuepress-toc', + listClass: 'vuepress-toc-list', + itemClass: 'vuepress-toc-item', + linkTag: 'RouterLink', + linkClass: 'vuepress-toc-link', + linkActiveClass: 'active', + linkChildrenActiveClass: 'active', +} +``` + +- Details: + + Customize the TOC component. + + If the `containerTag` is set to an empty string `''`, the `