complete `guide`

pull/2249/head
Xavi Lee 2 years ago
parent 9a7dc09387
commit cd8dd89a2b

@ -2,19 +2,19 @@
## 引用静态资源 {#referencing-static-assets}
所有的 Markdown 文件都会被编译成 Vue 组件,并由 [Vite](https://vitejs.dev/guide/assets.html) 处理。可以,**并且应该**使用相对路径来引用任何资源:
所有的 Markdown 文件都会被编译成 Vue 组件,并由 [Vite](https://vitejs.dev/guide/assets.html) 处理。可以,**并且应该**使用相对路径来引用资源:
```md
![An image](./image.png)
```
可以在 Markdown 文件、主题中的 `*.vue` 组件、样式和普通的 `.css` 文件中引用静态资源,通过使用绝对路径 (基于项目根目录) 或者相对路径 (基于文件系统)。后者类似于 ViteVue CLI或者 webpack 的 `file-loader` 的行为。
可以在 Markdown 文件、主题中的 `*.vue` 组件、样式和普通的 `.css` 文件中引用静态资源,通过使用绝对路径 (基于项目根目录) 或者相对路径 (基于文件系统)。后者类似于 Vite、Vue CLI 或者 webpack 的 `file-loader` 的行为。
常见的图像,媒体和字体文件会被自动检测并视作资源。
所有引用的资源,包括那些使用绝对路径的,都会在生产构建过程中被复制到输出目录,并使用哈希文件名。从未使用过的资源将不会被复制。小于 4kb 的图像资源将会采用 base64 内联——这可以通过 [`vite`](../reference/site-config#vite) 配置选项进行配置。
所有**静态**路径引用,包括绝对路径,都应基于你的工作目录结构。
所有**静态**路径引用,包括绝对路径,都应基于你的工作目录结构。
## public 目录 {#the-public-directory}
@ -24,11 +24,11 @@
放置在 `public` 中的资源将按原样复制到输出目录的根目录中。
请注意,应使用根绝对路径来引用放置在 `public` 中的文件 - 例如,`public/icon.png` 应始终在源代码中作为 `/icon.png` 引用。
请注意,应使用根绝对路径来引用放置在 `public` 中的文件——例如,`public/icon.png` 应始终在源代码中作为 `/icon.png` 引用。
## 根 URL {#base-url}
如果站没有部署在根 URL 上,则需要在 `.vitepress/config.js` 中设置 `base` 选项。例如,如果计划将站部署到 `https://foo.github.io/bar/`,则 `base` 应设置为 `'/bar/'`(它应始终以斜杠开头和结尾)。
如果站没有部署在根 URL 上,则需要在 `.vitepress/config.js` 中设置 `base` 选项。例如,如果计划将站部署到 `https://foo.github.io/bar/`,则 `base` 应设置为 `'/bar/'`(它应始终以斜杠开头和结尾)。
所有静态资源路径都会被自动处理,来适应不同的 `base` 配置值。例如,如果 markdown 中有一个对 `public` 中的资源的绝对引用:
@ -38,7 +38,7 @@
在这种情况下,更改 `base` 配置值时,**无需**更新该引用。
但是如果你正在编写一个主题组件,它动态链接到资源,例如一个图片,它的 `src` 基于主题配置值:
但是如果你正在编写一个主题组件,它动态链接到资源,例如一个图片,它的 `src` 基于主题配置值:
```vue
<img :src="theme.logoPath" />

@ -6,11 +6,11 @@ outline: deep
## 一般的工作流 {#general-workflow}
将 VitePress 连接到 CMS 主要围绕 [动态路由](./routing#dynamic-routes)展开。在继续阅读之前,请确保了解它的工作原理。
将 VitePress 连接到 CMS 主要围绕[动态路由](./routing#dynamic-routes)展开。在继续阅读之前,请确保了解它的工作原理。
由于每个 CMS 的工作方式都不同,因此我们只能提供一个通用的工作流,你需要根据具体情况进行调整。
1. 如果你的 CMS 需要身份验证,请创建一个 `.env` 文件来存储你的 API 令牌
1. 如果你的 CMS 需要身份验证,请创建一个 `.env` 文件来存储你的 API token
```js
// posts/[id].paths.js
@ -21,13 +21,13 @@ outline: deep
2. 从 CMS 获取必要的数据并将其格式调整为合适的路径数据:
```js
```js
export default {
async paths() {
// 使用相应的 CMS 客户端库 (如果需要的话)
// use respective CMS client library if needed
const data = await (await fetch('https://my-cms-api', {
headers: {
// 如果需要 token 的话请在这里填写
// token if necessary
}
})).json()

@ -19,7 +19,7 @@
## 主题接口 {#theme-interface}
VitePress 自定义主题被定义为一个对象,该对象具有如下接口:
VitePress 自定义主题一个对象,该对象具有如下接口:
```ts
interface Theme {
@ -64,7 +64,7 @@ export default {
}
```
默认导出是自定义主题的唯一方式,并且只有 `Layout` 属性是必须的。所以从技术上讲,一个 VitePress 主题可以是一个单独的 Vue 组件。
默认导出是自定义主题的唯一方式,并且只有 `Layout` 属性是必须的。所以从技术上讲,一个 VitePress 主题可以是一个单独的 Vue 组件。
在组件内部,它的工作方式就像是一个普通的 Vite + Vue 3 应用。请注意,主题还需要保证 [SSR 兼容](./ssr-compat)。
@ -100,7 +100,7 @@ const { page } = useData()
</template>
```
[`useData()`](../reference/runtime-api#usedata) 为我们提供了所有的运行时数据,以便我们根据不同条件渲染不同的布局。我们可以访问的另一个数据是当前页面的 frontmatter。通过利用这个数据我们允许最终用户控制每个页面的布局。例如,用户可以指一个页面是否使用特殊的主页布局:
[`useData()`](../reference/runtime-api#usedata) 为我们提供了所有的运行时数据,以便我们根据不同条件渲染不同的布局。我们可以访问的另一个数据是当前页面的 frontmatter。通过利用这个数据我们允许用户控制每个页面的布局。例如用户可以指一个页面是否使用特殊的主页布局:
```md
---
@ -108,7 +108,7 @@ layout: home
---
```
并且我们可以该信息调整我们的主题
并且我们可以调整我们的主题进行处理:
```vue{3,12-14}
<script setup>
@ -162,15 +162,15 @@ const { page, frontmatter } = useData()
2. 如果合适的话,将主题配置类型定义作为 `ThemeConfig` 导出。
3. 如果主题需要调整 VitePress 配置,请在包子路径下 (例如 `my-theme/config`) 下导出该配置,以便用户拓展。
3. 如果主题需要调整 VitePress 配置,请在包子路径下 (例如 `my-theme/config`) 下导出该配置,以便用户拓展。
4. 记录主题配置选项 (通过配置文件和 frontmatter)。
5. 提供清晰的说明关于如何使用主题 (见下文)。
5. 提供清晰的说明,告诉用户如何使用主题 (见下文)。
## 使用自定义主题 {#consuming-a-custom-theme}
要使用外部主题,请从自定义主题入口导入导入它并重新导出:
要使用外部主题,请导入它并重新导出:
```js
// .vitepress/theme/index.js
@ -179,7 +179,7 @@ import Theme from 'awesome-vitepress-theme'
export default Theme
```
如果主题需要拓展:
如果主题需要拓展:
```js
// .vitepress/theme/index.js

@ -56,7 +56,7 @@ export default {
当需要基于本地文件生成数据时,应该在数据加载中使用 `watch` 选项,以便这些文件改动时可以触发热更新。
`watch` 选项也很方便,因为可以使用 [glob 模式](https://github.com/mrmlnc/fast-glob#pattern-syntax) 匹配多个文件。模式可以相对于加载文件本身,`load()` 函数将接收匹配文件的绝对路径。
`watch` 选项也很方便,因为可以使用 [glob 模式](https://github.com/mrmlnc/fast-glob#pattern-syntax) 匹配多个文件。模式可以相对于数据加载文件本身,`load()` 函数将接收匹配文件的绝对路径。
下面的例子展示了如何使用 [csv-parse](https://github.com/adaltas/node-csv/tree/master/packages/csv-parse/) 加载 CSV 文件并将其转换为 JSON。因为此文件仅在构建时执行因此不会将 CSV 解析器发送到客户端!
@ -82,7 +82,7 @@ export default {
## `createContentLoader`
当构建一个内容为主的站时,我们经常需要创建一个“档案”或“索引”页面:一个我们可以列出内容中的所有可用条目的页面,例如博客文章或 API 页面。我们**可以**直接使用数据加载 API 实现这一点但由于这是一个常见的用例VitePress 还提供了一个 `createContentLoader` 辅助函数来简化这个过程:
当构建一个内容为主的站时,我们经常需要创建一个“档案”或“索引”页面:一个我们可以列出内容中的所有可用条目的页面,例如博客文章或 API 页面。我们**可以**直接使用数据加载 API 实现这一点但由于这是一个常见的用例VitePress 还提供了一个 `createContentLoader` 辅助函数来简化这个过程:
```js
// posts.data.js
@ -95,7 +95,7 @@ export default createContentLoader('posts/*.md', /* options */)
请注意,数据加载仅适用于 Markdown 文件——匹配的非 Markdown 文件将被跳过。
加载的数据将是一个类型为 `ContentData[]` 数组:
加载的数据将是一个类型为 `ContentData[]` 数组:
```ts
interface ContentData {
@ -113,7 +113,7 @@ interface ContentData {
}
```
默认情况下只提供 `url``frontmatter`。这是因为加载的数据将作为 JSON 内联在客户端包中,我们需要谨慎考虑其大小。下面的例子展示了如何使用数据构建最小博客索引页面:
默认情况下只提供 `url``frontmatter`。这是因为加载的数据将作为 JSON 内联在客户端包中,我们需要谨慎考虑其大小。下面的例子展示了如何使用数据构建最小博客索引页面:
```vue
<script setup>
@ -216,7 +216,7 @@ interface ContentOptions<T = ContentData[]> {
## 为数据加载器导出类型 {#typed-data-loaders}
当使用 TypeScript 时,可以像这样为加载器`data` 导出类型:
当使用 TypeScript 时,可以像这样为 loader `data` 导出类型:
```ts
import { defineLoader } from 'vitepress'

@ -2,9 +2,9 @@
outline: deep
---
# 部署 VitePress 站 {#deploy-your-vitepress-site}
# 部署 VitePress 站 {#deploy-your-vitepress-site}
以下指南基于一些共设前提:
以下指南基于一些前提:
- VitePress 站点位于项目的 `docs` 目录中。
- 你使用的是默认的生成输出目录 `.vitepress/dist`)。
@ -21,13 +21,13 @@ outline: deep
## 本地构建与测试 {#build-and-test-locally}
1. 可以运行以下命令来构建文档:
1. 可以运行以下命令来构建文档:
```sh
$ npm run docs:build
```
2. 构建文档后,通过运行以下命令在本地预览它:
2. 构建文档后,通过运行以下命令可以在本地预览它:
```sh
$ npm run docs:preview
@ -35,7 +35,7 @@ outline: deep
`preview` 命令将启动一个本地静态 Web 服务器`http://localhost:4173`,该服务器以 `.vitepress/dist` 作为源文件。这是检查生产版本在本地环境中是否正常的一种简单方法。
3. 可以通过传递`--port`作为参数来配置服务器的端口。
3. 可以通过传递 `--port` 作为参数来配置服务器的端口。
```json
{
@ -49,7 +49,7 @@ outline: deep
## 设定 public 根目录 {#setting-a-public-base-path}
默认情况下,我们假设站点将部署在域名 `/`)的根路径上。如果网站将在子路径中提供服务,例如 `https://mywebsite.com/blog/`,则需要在 VitePress 配置中将 [`base`](../reference/site-config#base)选项设置为 `'/blog/'`
默认情况下,我们假设站点将部署在域名 `/`)的根路径上。如果站点在子路径中提供服务,例如 `https://mywebsite.com/blog/`,则需要在 VitePress 配置中将 [`base`](../reference/site-config#base)选项设置为 `'/blog/'`
**例:** 如果你使用的是 Github或 GitLab页面并部署到 `user.github.io/repo/`,请将 `base` 设置为 `/repo/`
@ -57,9 +57,9 @@ outline: deep
如果可以控制生产服务器上的 HTTP 标头,则可以配置 `cache-control` 标头以在重复访问时获得更好的性能。
生产版本对静态资源JavaScript、CSS 和其他非 `public` 目录中的导入资源)使用哈希文件名。如果你使用浏览器开发工具的网络选项卡查生产预览,你将看到类似 `app.4f283b18.js` 的文件。
生产版本对静态资源 (JavaScript、CSS 和其他非 `public` 目录中的导入资源) 使用哈希文件名。如果你使用浏览器开发工具的网络选项卡查生产预览,你将看到类似 `app.4f283b18.js` 的文件。
此哈希 `4f283b18` 是从此文件的内容生成的。相同的哈希 URL 保证提供相同的文件内容 —— 如果内容更改URL 也会更改。这意味着你可以安全地为这些文件使用最强的缓存标头。所有此类文件都将放置在输出目录的 `assets/` 中,因此你可以为它们配置以下标头:
此哈希 `4f283b18` 是从此文件的内容生成的。相同的哈希 URL 保证提供相同的文件内容——如果内容更改URL 也会更改。这意味着你可以安全地为这些文件使用最强的缓存标头。所有此类文件都将放置在输出目录的 `assets/` 中,因此你可以为它们配置以下标头:
```
Cache-Control: max-age=31536000,immutable
@ -111,7 +111,8 @@ Cache-Control: max-age=31536000,immutable
- **构建命令:** `npm run docs:build`
- **输出目录:** `docs/.vitepress/dist`
- **node 版本:** `18` (或更高版本)
- **node 版本:** `18` (或更高版本)
::: warning
不要为 HTML 代码启用 _Auto Minify_ 等选项。它将从输出中删除对 Vue 有意义的注释。如果被删除,你可能会看到激活不匹配错误。
:::
@ -120,14 +121,14 @@ Cache-Control: max-age=31536000,immutable
1. 在项目的 `.github/workflows` 目录中创建一个名为 `deploy.yml` 的文件,其中包含这样的内容:
```yaml
# 用于构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程
```yaml
# Sample workflow for building and deploying a VitePress site to GitHub Pages
#
name: Deploy VitePress site to Pages
on:
# 针对 `main` 分支的推送上运行。
# 如果你使用 `master` 作为默认分支,请将其更改为 `master`
# Runs on pushes targeting the `main` branch. Change this to `master` if you're
# using the `master` branch as the default branch.
push:
branches: [main]
@ -190,19 +191,18 @@ Cache-Control: max-age=31536000,immutable
```
::: warning
确保 VitePress 中的 `base` 选项配置正确。有关更多详细信息,请参阅[设置 base 路径](#setting-a-public-base-path)。
确保 VitePress 中的 `base` 选项配置正确。有关更多详细信息,请参阅[设置路径](#setting-a-public-base-path)。
:::
2. 在存储库设置中的 “Pages” 菜单项下,选择 “Build and deployment > Source > GitHub Actions”。
2. 在存储库设置中的“Pages”菜单项下选择“Build and deployment > Source > GitHub Actions”。
3. 将更改推送到 `main` 分支并等待 GitHub Action 工作流完成。你应该看到站点部署到 `https://<username>.github.io/[repository]/``https://<custom-domain>/`,这取决于你的设置。你的站点将在每次推送到 `main` 分支时自动部署。
3. 将更改推送到 `main` 分支并等待 GitHub Actions 工作流完成。你应该看到站点部署到 `https://<username>.github.io/[repository]/``https://<custom-domain>/`,这取决于你的设置。你的网站将在每次推送到 `main` 分支时自动部署。
### GitLab Pages
1. 如果你想部署到 `https://<username> .gitlab.io/<repository> /`,将 VitePress 配置中的 `outDir` 设置为 `../public`。将 `base` 选项配置为 `'/<repository>/'`
2. 在项目的根目录中创建一个名为 `.gitlab-ci.yml` 的文件,其中包含以下内容。每当你更改内容时,这都会构建和部署你的网站:
3. 使用以下内容在项目的根目录中创建一个名为 `.gitlab-ci.yml` 的文件。每当你更改内容时,会自动构建和部署你的站点:
2. 在项目的根目录中创建一个名为 `.gitlab-ci.yml` 的文件,其中包含以下内容。每当你更改内容时,这都会构建和部署你的站点:
```yaml
image: node:18
@ -288,4 +288,4 @@ Cache-Control: max-age=31536000,immutable
### Kinsta 静态站点托管 {#kinsta-static-site-hosting}
你可以按照这些 [说明](https://kinsta.com/docs/vitepress-static-site-example/) 在 [Kinsta](https://kinsta.com/static-site-hosting/) 上部署 Vitepress 站。
你可以按照这些[说明](https://kinsta.com/docs/vitepress-static-site-example/) 在 [Kinsta](https://kinsta.com/static-site-hosting/) 上部署 Vitepress 站

@ -42,7 +42,7 @@ export default DefaultTheme
## 使用自定义字体 {#using-different-fonts}
VitePress 使用 [Inter](https://rsms.me/inter/) 作为默认字体,并且将其包含在生成的输出中。该字体在生产环境中也会自动预加载。但是如果要使用不同的主字体,这可能不是一个好的选择
VitePress 使用 [Inter](https://rsms.me/inter/) 作为默认字体,并且将其包含在生成的输出中。该字体在生产环境中也会自动预加载。但是如果要使用不同的字体,这可能不是很好
为了避免在生成后的输出中包含 Inter 字体,请从 `vitepress/theme-without-fonts` 中导入主题:
@ -63,7 +63,7 @@ export default DefaultTheme
```
::: warning
如果你在使用像是[团队页](/reference/default-theme-team-page)这样的组件,请确保也`vitepress/theme-without-fonts` 中导入它们!
如果你在使用像是[团队页](/reference/default-theme-team-page)这样的组件,请确保也从 `vitepress/theme-without-fonts` 中导入它们!
:::
如果字体是通过 `@font-face` 引用的本地文件,它将会被作为资源被包含在 `.vitepress/dist/asset` 目录下,并且使用哈希后的文件名。为了预加载这个文件,请使用 [transformHead](/reference/site-config#transformhead) 构建钩子:
@ -127,7 +127,7 @@ export default {
## 布局插槽 {#layout-slots}
默认主题的 `<Layout/>` 组件有一些插槽,能够被用来在页面的特定位置注入内容。下面这个例子展示了将一个组件注入到大纲之前:
默认主题的 `<Layout/>` 组件有一些插槽,能够被用来在页面的特定位置注入内容。下面这个例子展示了将一个组件注入到 outline 之前:
```js
// .vitepress/theme/index.js
@ -215,9 +215,11 @@ export default {
- `nav-screen-content-before`
- `nav-screen-content-after`
## Using View Transitions API
### 关于外观切换 {#on-appearance-toggle}
可以扩展默认主题以在切换颜色模式时提供自定义过渡动画。一个例子
可以扩展默认主题以在切换颜色模式时提供自定义过渡动画。例如
```vue
<!-- .vitepress/theme/Layout.vue -->
@ -294,7 +296,7 @@ provide('toggle-appearance', async ({ clientX: x, clientY: y }: MouseEvent) => {
</style>
```
结果(**谨慎使用!**:闪烁的颜色、突然的移动、高亮度):
Result (**warning!**: flashing colors, sudden movements, bright lights):
<details>
<summary>Demo</summary>

@ -6,7 +6,7 @@
## 安装 {#installation}
### 前置知识 {#prerequisites}
### 前置准备 {#prerequisites}
- [Node.js](https://nodejs.org/) 18 及以上版本。
- 通过命令行界面 (CLI) 访问 VitePress 的终端。
@ -52,6 +52,7 @@ $ bun add -D vitepress
:::
::: tip 注意
VitePress 是仅 ESM 的软件包。不要使用 `require()` 导入它,并确保最新的 `package.json` 包含 `"type": "module"`,或者更改相关文件的文件扩展名,例如`.vitepress/config.js` 到 `.mjs`/`.mts`。更多详情请参考[Vite 故障排除指南](http://vitejs.dev/guide/troubleshooting.html#this-package-is-esm-only)。此外,在异步 CJS 上下文中,可以使用 `await import('vitepress')` 代替。
:::
@ -80,7 +81,7 @@ $ bunx vitepress init
<<< @/snippets/init.ansi
:::tip Vue 作为
:::tip Vue 作为 peer dependency
如果打算使用 Vue 组件或 API 进行自定义,还应该明确地将 `vue` 安装为 peer dependency。
:::
@ -192,7 +193,7 @@ $ bunx vitepress dev docs
更多的命令行用法请参见 [CLI 参考](../reference/cli)。
开发服务应该会运行在 `http://localhost:5173`上。在浏览器中访问 URL 以查看新站点的运行情况吧!
开发服务应该会运行在 `http://localhost:5173` 上。在浏览器中访问 URL 以查看新站点的运行情况吧!
## 下一步 {#what-s-next}

@ -17,7 +17,7 @@ docs/
import { defineConfig } from 'vitepress'
export default defineConfig({
// 共享属性和其他外层内容......
// shared properties and other top-level stuff...
locales: {
root: {
@ -26,10 +26,10 @@ export default defineConfig({
},
fr: {
label: 'French',
lang: 'fr', // 可选,将作为 `lang` 属性添加到 `html` 标签上
link: '/fr/guide' // default /fr/ -- 显示在导航栏翻译菜单上,可以是外部的链接
lang: 'fr', // optional, will be added as `lang` attribute on `html` tag
link: '/fr/guide' // default /fr/ -- shows on navbar translations menu, can be external
// 其他 locale 特定属性...
// other locale specific properties...
}
}
})
@ -49,9 +49,9 @@ interface LocaleSpecificConfig<ThemeConfig = any> {
}
```
有关自定义默认主题的文本占位符的信息,请参考 [`DefaultTheme.Config`](https://github.com/vuejs/vitepress/blob/main/types/default-theme.d.ts) 接口。不要在 locale 级别覆盖 `themeConfig.algolia``themeConfig.carbonAds`。想获取多语言查询的信息,请参考 [Algolia docs](../reference/default-theme-search#i18n)。
有关自定义默认主题的文本占位符的信息,请参考 [`DefaultTheme.Config`](https://github.com/vuejs/vitepress/blob/main/types/default-theme.d.ts) 接口。不要在 locale 级别覆盖 `themeConfig.algolia``themeConfig.carbonAds`。想获取多语言搜索的信息,请参考 [Algolia 文档](../reference/default-theme-search#i18n)。
**提示** 配置文件也可以存储在 `docs/.vitepress/config/index.ts`。通过为每个语言环境创建一个配置文件,然后从 `index.ts` 合并并导出它们,可以更好的组织文件。
**提示**:配置文件也可以是 `docs/.vitepress/config/index.ts`。通过为每个语言环境创建一个配置文件,然后从 `index.ts` 合并并导出它们,可以更好的组织文件。
## 为本地化设置子目录 {#separate-directory-for-each-locale}
@ -75,7 +75,7 @@ docs/
/* /en/:splat 302
```
**提示:** 如果使用上述的方法,可以使用`nf_lang` cookie 来保存用户的语言选择。一个非常基础的方法是通过在自定义主题的 [setup](./custom-theme#using-a-custom-theme) 函数中注册一个听器:
**提示:** 如果使用上述的方法,可以使用`nf_lang` cookie 来保存用户的语言选择。一个非常基础的方法是通过在自定义主题的 [setup](./custom-theme#using-a-custom-theme) 函数中注册一个听器:
```ts
// docs/.vitepress/theme/index.ts
@ -96,4 +96,4 @@ export default {
## RTL 支持 (实验性功能) {#rtl-support-experimental}
要支持 RTL需要在配置中指定 `dir: 'rtl'` 并且使用一些 RTLCSS PostCSS 插件,例如 <https://github.com/MohammadYounes/rtlcss>, <https://github.com/vkalinichev/postcss-rtl> 或者 <https://github.com/elchininet/postcss-rtlcss>。需要配置 PostCSS 插件,使用 `:where([dir="ltr"])``:where([dir="rtl"])` 作为前缀,以防止 CSS 特异性问题。
支持 RTL 需要在配置中指定 `dir: 'rtl'` 并且使用一些 RTLCSS PostCSS 插件,例如 <https://github.com/MohammadYounes/rtlcss>, <https://github.com/vkalinichev/postcss-rtl> 或者 <https://github.com/elchininet/postcss-rtlcss>。需要配置 PostCSS 插件,使用 `:where([dir="ltr"])``:where([dir="rtl"])` 作为前缀,以防止 CSS 特异性问题。

@ -1,21 +0,0 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.03628 7.87818C4.75336 5.83955 6.15592 3.95466 8.16899 3.66815L33.6838 0.0367403C35.6969 -0.24977 37.5581 1.1706 37.841 3.20923L42.9637 40.1218C43.2466 42.1604 41.8441 44.0453 39.831 44.3319L14.3162 47.9633C12.3031 48.2498 10.4419 46.8294 10.159 44.7908L5.03628 7.87818Z" fill="url(#paint0_linear_1287_1214)"/>
<path d="M6.85877 7.6188C6.71731 6.59948 7.41859 5.65703 8.42512 5.51378L33.9399 1.88237C34.9465 1.73911 35.8771 2.4493 36.0186 3.46861L41.1412 40.3812C41.2827 41.4005 40.5814 42.343 39.5749 42.4862L14.0601 46.1176C13.0535 46.2609 12.1229 45.5507 11.9814 44.5314L6.85877 7.6188Z" fill="white"/>
<path d="M33.1857 14.9195L25.8505 34.1576C25.6991 34.5547 25.1763 34.63 24.9177 34.2919L12.3343 17.8339C12.0526 17.4655 12.3217 16.9339 12.7806 16.9524L22.9053 17.3607C22.9698 17.3633 23.0344 17.3541 23.0956 17.3337L32.5088 14.1992C32.9431 14.0546 33.3503 14.4878 33.1857 14.9195Z" fill="url(#paint1_linear_1287_1214)"/>
<path d="M27.0251 12.5756L19.9352 15.0427C19.8187 15.0832 19.7444 15.1986 19.7546 15.3231L20.3916 23.063C20.4066 23.2453 20.5904 23.3628 20.7588 23.2977L22.7226 22.5392C22.9064 22.4682 23.1021 22.6138 23.0905 22.8128L22.9102 25.8903C22.8982 26.0974 23.1093 26.2436 23.295 26.1567L24.4948 25.5953C24.6808 25.5084 24.892 25.6549 24.8795 25.8624L24.5855 30.6979C24.5671 31.0004 24.9759 31.1067 25.1013 30.8321L25.185 30.6487L29.4298 17.8014C29.5008 17.5863 29.2968 17.3809 29.0847 17.454L27.0519 18.1547C26.8609 18.2205 26.6675 18.0586 26.6954 17.8561L27.3823 12.8739C27.4103 12.6712 27.2163 12.5091 27.0251 12.5756Z" fill="url(#paint2_linear_1287_1214)"/>
<defs>
<linearGradient id="paint0_linear_1287_1214" x1="6.48163" y1="1.9759" x2="39.05" y2="48.2064" gradientUnits="userSpaceOnUse">
<stop stop-color="#49C7FF"/>
<stop offset="1" stop-color="#BD36FF"/>
</linearGradient>
<linearGradient id="paint1_linear_1287_1214" x1="11.8848" y1="16.4266" x2="26.7246" y2="31.4177" gradientUnits="userSpaceOnUse">
<stop stop-color="#41D1FF"/>
<stop offset="1" stop-color="#BD34FE"/>
</linearGradient>
<linearGradient id="paint2_linear_1287_1214" x1="21.8138" y1="13.7046" x2="26.2464" y2="28.8069" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFEA83"/>
<stop offset="0.0833333" stop-color="#FFDD35"/>
<stop offset="1" stop-color="#FFA800"/>
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

@ -1,6 +1,6 @@
# 从 VitePress 0.x 迁移 {#migration-from-vitepress-0-x}
如果你来自 VitePress 0.x 版本,由于新功能和增强功能,VitePress 有了一些重大更改。请按照本指南了解如何将应用程序迁移到最新的 VitePress。
如果你来自 VitePress 0.x 版本VitePress 有了一些重大更改。请按照本指南了解如何将应用程序迁移到最新的 VitePress。
## 应用配置 {#app-config}

@ -84,11 +84,11 @@ src/getting-started.md --> /getting-started.html
在页面之间链接时,可以使用绝对路径和相对路径。请注意,虽然 `.md``.html` 扩展名都可以使用,但最佳做法是省略文件扩展名,以便 VitePress 可以根据配置生成最终 URL。
```md
<!-- 正确做法 -->
<!-- Do -->
[Getting Started](./getting-started)
[Getting Started](../guide/getting-started)
<!-- 不正确做法 -->
<!-- Don't -->
[Getting Started](./getting-started.md)
[Getting Started](./getting-started.html)
```
@ -97,17 +97,17 @@ src/getting-started.md --> /getting-started.html
### 链接到非 vitepress 页面 {#linking-to-non-vitepress-pages}
如果想链接到站中不是由 VitePress 生成的页面,需要使用完整的 URL在新选项卡中打开或明确指定 target
如果想链接到站中不是由 VitePress 生成的页面,需要使用完整的 URL在新选项卡中打开或明确指定 target
**Input**
**输入**
```md
[链接到 pure.html](/pure.html){target="\_self"}
[Link to pure.html](/pure.html){target="_self"}
```
**Output**
**输出**
[链接到 pure.html](/pure.html){target="\_self"}
[Link to pure.html](/pure.html){target="_self"}
::: tip 注意

@ -65,7 +65,6 @@ export default {
```
如果使用 TypeScript:
```ts
// .vitepress/theme/index.ts
import type { Theme } from 'vitepress'

@ -196,6 +196,8 @@ Hello {{ 1 + 1 }}
Hello {{ 1 + 1 }}
```
请注意,这可能会让某些字符不能正确地进行语法高亮显示。
## 使用 CSS 预处理器 {#using-css-pre-processors}
VitePress [内置支持](https://cn.vitejs.dev/guide/features.html#css-pre-processors) CSS 预处理器:`.scss`、`.sass`、.`less`、`.styl` 和 `.stylus` 文件。无需为它们安装 Vite 专用插件,但必须安装相应的预处理器:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

@ -1,6 +1,6 @@
# VitePress 是什么? {#what-is-vitepress}
VitePress 是一个[静态站点生成器](https://en.wikipedia.org/wiki/Static_site_generator) (SSG),专为构建快速、以内容为中心的站而设计。简而言之VitePress 获取用 Markdown 编写的源内容,对其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面。
VitePress 是一个[静态站点生成器](https://en.wikipedia.org/wiki/Static_site_generator) (SSG),专为构建快速、以内容为中心的站而设计。简而言之VitePress 获取用 Markdown 编写的源内容,对其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面。
<div class="tip custom-block" style="padding-top: 8px">
@ -34,7 +34,7 @@ VitePress 旨在使用 Markdown 生成内容时提供出色的开发体验。
## 性能 {#performance}
与许多传统的 SSG 不同VitePress 生成的站实际上是一个[单页应用程序](https://en.wikipedia.org/wiki/Single-page_application) (SPA)。
与许多传统的 SSG 不同VitePress 生成的站实际上是一个[单页应用程序](https://en.wikipedia.org/wiki/Single-page_application) (SPA)。
- **快速初始加载**
@ -42,7 +42,7 @@ VitePress 旨在使用 Markdown 生成内容时提供出色的开发体验。
- **加载完成后可以快速切换**
更重要的是SPA 模型在首次加载后能够提升用户体验。用户在站内导航时不会再触发整个页面的刷新。而是通过获取并动态更新新页面的内容来实现切换。VitePress还会自动预加载视口范围内链接对应的页面片段。这样一来大部分情况下用户在加载完成后就能立即浏览新页面。
更重要的是SPA 模型在首次加载后能够提升用户体验。用户在站内导航时不会再触发整个页面的刷新。而是通过获取并动态更新新页面的内容来实现切换。VitePress还会自动预加载视口范围内链接对应的页面片段。这样一来大部分情况下用户在加载完成后就能立即浏览新页面。
- **高效的交互**

@ -19,4 +19,4 @@ export default {
`//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}`
```
要了解有关 Carbon Ads 配置的更多信息,请访问 [Carbon Ads 站](https://www.carbonads.net/)。
要了解有关 Carbon Ads 配置的更多信息,请访问 [Carbon Ads ](https://www.carbonads.net/)。

@ -29,7 +29,7 @@ export default {
- 类型:`ThemeableImage`
导航栏上显示的 Logo位于站标题右侧。可以接受一个路径字符串,或者一个对象来设置在浅色/深色模式下不同的 Logo。
导航栏上显示的 Logo位于站标题右侧。可以接受一个路径字符串,或者一个对象来设置在浅色/深色模式下不同的 Logo。
```ts
export default {
@ -50,7 +50,7 @@ type ThemeableImage =
- 类型:`string | false`
可以自定义此项以替换导航中的默认站点标题(应用配置中的 `title`)。当设置为 `false` 时,导航中的标题将被禁用。这在当 `logo` 已经包含站标题文本时很有用。
可以自定义此项以替换导航中的默认站点标题(应用配置中的 `title`)。当设置为 `false` 时,导航中的标题将被禁用。这在当 `logo` 已经包含站标题文本时很有用。
```ts
export default {

@ -1,6 +1,6 @@
# 主页 {#home-page}
VitePress 默认主题提供了一个首页布局,也可以在[此站首页](../)看到。可以通过 [frontmatter](./frontmatter-config) 指定 `layout: home` 在任何页面上使用它
VitePress 默认主题提供了一个首页布局,也可以在[此站首页](../)看到。可以通过 [frontmatter](./frontmatter-config) 指定 `layout: home` 在任何页面上使用它
```yaml
---

@ -2,7 +2,7 @@
Nav 是显示在页面顶部的导航栏。它包含站点标题、全局菜单链接等。
## 站标题和图标 {#site-title-and-logo}
## 站标题和图标 {#site-title-and-logo}
默认情况下nav 显示 [`config.title`](./site-config#title) 作为站点的标题。如果想更改导航栏上显示的内容,可以在 `themeConfig.siteTitle` 选项中定义自定义文本。

@ -95,7 +95,7 @@ export default {
## 多侧边栏 {#multiple-sidebars}
可能会根据页面路径显示不同的侧边栏。例如,如本站所示,可能希望在文档中创建单独的侧边栏,例如“指引”页面和“配置参考”页面。
可能会根据页面路径显示不同的侧边栏。例如,如本站所示,可能希望在文档中创建单独的侧边栏,例如“指引”页面和“配置参考”页面。
为此,首先将你的页面组织到每个所需部分的目录中:

@ -93,9 +93,9 @@ type HeadConfig =
指定页面的布局。
- `doc` - 它将默认文档样式应用于 markdown 内容。
- `home` - “主页”的特殊布局。可以添加额外的选项,例如 `hero``features`,以快速创建漂亮的落地页。
- `page` - 表现类似于 `doc`,但它不对内容应用任何样式。当想创建一个完全自定义的页面时很有用。
- `doc`——它将默认文档样式应用于 markdown 内容。
- `home`——“主页”的特殊布局。可以添加额外的选项,例如 `hero``features`,以快速创建漂亮的落地页。
- `page`——表现类似于 `doc`,但它不对内容应用任何样式。当想创建一个完全自定义的页面时很有用。
```yaml
---

@ -4,7 +4,7 @@ outline: deep
# 站点配置 {#site-config}
Site config 可以定义站点的全局设置。App config 配置选项适用于每个 VitePress 站点,无论它使用什么主题。例如 base 目录或站的标题。
Site config 可以定义站点的全局设置。App config 配置选项适用于每个 VitePress 站点,无论它使用什么主题。例如 base 目录或站的标题。
## 概览 {#overview}
@ -141,7 +141,7 @@ export default defineConfigWithTheme<ThemeConfig>({
- 默认值: `VitePress`
- 每个页面可以通过 [frontmatter](./frontmatter-config#title) 覆写
站的标题。使用默认主题时,这将显示在导航栏中。
的标题。使用默认主题时,这将显示在导航栏中。
它还将用作所有单独页面标题的默认后缀,除非定义了 [`titleTemplate`](#titletemplate)。单个页面的最终标题将是其第一个 `<h1>` 标题的文本内容加上的全局 `title`。例如使用以下配置和页面内容:
@ -195,7 +195,7 @@ export default {
- 默认值: `A VitePress site`
- 每个页面可以通过 [frontmatter](./frontmatter-config#description) 覆写
站的描述。这将呈现为页面 HTML 中的 `<meta>` 标签。
的描述。这将呈现为页面 HTML 中的 `<meta>` 标签。
```ts
export default {
@ -550,7 +550,7 @@ export default {
## 构建钩子 {#build-hooks}
VitePress 构建钩子允许向站添加新功能和行为:
VitePress 构建钩子允许向站添加新功能和行为:
- Sitemap
- Search Indexing

Loading…
Cancel
Save