VuePress V2 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown在新窗口打开 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。
VuePress 诞生的初衷是为了支持 Vue.js 及其子项目的文档需求,但是现在它已经在帮助大量用户构建他们的文档、博客和其他静态网站。
一个 VuePress 站点本质上是一个由 Vue在新窗口打开 和 Vue Router在新窗口打开 驱动的单页面应用 (SPA)。
路由会根据你的 Markdown 文件的相对路径来自动生成。每个 Markdown 文件都通过 markdown-it在新窗口打开 编译为 HTML ,然后将其作为 Vue 组件的模板。因此,你可以在 Markdown 文件中直接使用 Vue 语法,便于你嵌入一些动态内容。
在开发过程中,我们启动一个常规的开发服务器 (dev-server) ,并将 VuePress 站点作为一个常规的 SPA。如果你以前使用过 Vue 的话,你在使用时会感受到非常熟悉的开发体验。
在构建过程中,我们会为 VuePress 站点创建一个服务端渲染 (SSR) 的版本,然后通过虚拟访问每一条路径来渲染对应的 HTML 。
创建并进入一个新目录
mkdir vuepress-starter
cd vuepress-starter初始化项目
git init
yarn init将 VuePress 安装为本地依赖
yarn add -D vuepress@next在 package.json 中添加一些 scripts在新窗口打开
{
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
}
}将默认的临时目录和缓存目录添加到 .gitignore 文件中
echo 'node_modules' >> .gitignore
echo '.temp' >> .gitignore
echo '.cache' >> .gitignore创建你的第一篇文档
mkdir docs
echo '# Hello VuePress' > docs/README.md在本地启动服务器来开发你的文档网站
yarn docs:devVuePress 会在 http://localhost:8080在新窗口打开 启动一个热重载的开发服务器。当你修改你的 Markdown 文件时,浏览器中的内容也会自动更新。
假设这是你的 Markdown 文件所处的目录结构:
└─ docs
├─ guide
│ ├─ getting-started.md
│ └─ README.md
├─ contributing.md
└─ README.md将 docs 目录作为你的 sourceDir ,例如你在运行 vuepress dev docs 命令。此时,你的 Markdown 文件对应的路由路径为:
相对路径 | 路由路径 |
|---|---|
/README.md | / |
/contributing.md | /contributing.html |
/guide/README.md | /guide/ |
/guide/page.md | /guide/page.html |
在你使用 Markdown 的 链接语法在新窗口打开 时, VuePress 会为你进行一些转换。
你可以在你的 Markdown 内容中输入 :EMOJICODE: 来添加 Emoji 表情。
前往 emoji-cheat-sheet在新窗口打开 来查看所有可用的 Emoji 表情和对应代码。
输入
VuePress 2 已经发布 :tada: !输出
VuePress 2 已经发布 🎉 !
如果你想要把当前页面的目录添加到 Markdown 内容中,你可以使用 [[toc]] 语法。
下列代码块扩展是在 Node 端进行 Markdown 解析的时候实现的。这意味着代码块并不会在客户端被处理。
行高亮
你可以在代码块添加行数范围标记,来为对应代码行进行高亮:
输入
```ts{1,6-8}
import type { UserConfig } from '@vuepress/cli'
export const config: UserConfig = {
title: '你好, VuePress',
themeConfig: {
logo: 'https://vuejs.org/images/logo.png',
},
}行数范围标记的例子:
{5-8} {4,7,9} {4,7-13,16,23-27,40} 行号 你肯定已经注意到在代码块的最左侧会展示行号。这个功能是默认启用的,你可以通过配置来禁用它。
你可以在代码块添加 :line-numbers / :no-line-numbers 标记来覆盖配置项中的设置。
base 类型: string
默认值: / 详情:部署站点的基础路径。
如果你想让你的网站部署到一个子路径下,你将需要设置它。它的值应当总是以斜杠开始,并以斜杠结束。举例来说,如果你想将你的网站部署到 https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/"。
base 将会作为前缀自动地插入到所有以 / 开始的其他选项的链接中,所以你只需要指定一次。
navbar
示例 1:
module.exports = {
themeConfig: {
navbar: [
// NavbarItem
{
text: 'Foo',
link: '/foo/',
},
// NavbarGroup
{
text: 'Group',
children: ['/group/foo.md', '/group/bar.md'],
},
// 字符串 - 页面文件路径
'/bar/README.md',
],
},
}示例 2:
module.exports = {
themeConfig: {
navbar: [
// 嵌套 Group - 最大深度为 2
{
text: 'Group',
children: [
{
text: 'SubGroup',
children: ['/group/sub/foo.md', '/group/sub/bar.md'],
},
],
},
// 控制元素何时被激活
{
text: 'Group 2',
children: [
{
text: 'Always active',
link: '/',
// 该元素将一直处于激活状态
activeMatch: '/',
},
{
text: 'Active on /foo/',
link: '/not-foo/',
// 该元素在当前路由路径是 /foo/ 开头时激活
// 支持正则表达式
activeMatch: '^/foo/',
},
],
},
],
},
}VuePress 站点必要的配置文件是 .vuepress/config.js,它应该导出一个 JavaScript 对象。如果你使用 TypeScript ,你可以将其替换为 .vuepress/config.ts ,以便让 VuePress 配置得到更好的类型提示。
config.ts 配置
import { defineUserConfig } from 'vuepress'
import type { DefaultThemeOptions } from 'vuepress'
export default defineUserConfig<DefaultThemeOptions>({
// 站点配置
base: '/vuepress/',
lang: 'zh-CN',
title: '你好 VuePress',
description: 'Just playing around',
// 主题和它的配置
theme: '@vuepress/theme-default',
themeConfig: {
logo: 'https://vuejs.org/images/logo.png',
navbar: [
{
text: '指南',
link: ' https://v2.vuepress.vuejs.org/zh/guide/#%E5%AE%83%E6%98%AF%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%E7%9A%84',
},
// 嵌套 Group - 最大深度为 2
{
text: '参考',
children: [
{
text: 'VuePress',
children: [{text: '命令行接口',link: '/cli', activeMatch: '/cli',}, {text: '配置',link: '/config',activeMatch: '/config'}],
}
],
},
{
text: 'Github',
link: 'https://github.com/vuepress/vuepress-next',
},
],
},
})VuePress Demo 代码地址 https://gitee.com/kaiLee/Demo-VuePress
优点:配套工具较为完善,默认给的主题已经集成度很高了,自定义选项多,更适合程序员发的文档。
缺点:V2 的文档写的有点糙,很多时候不知道怎样配置启用所需的功能。
一些记录:
package.json 中添加一些 scripts在新窗口打开,分别用于调试和部署。{
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
}
}首页 | VuePress https://v2.vuepress.vuejs.org/zh/