VuePress搭建个人技术文档网站教程

news/2024/4/27 9:10:13/文章来源:https://blog.csdn.net/weixin_34026484/article/details/88731210

VuePress 由两部分组成:一部分是支持用 Vue 开发主题的极简静态网站生成器,另一个部分是为书写技术文档而优化的默认主题。它的诞生初衷是为了支持 Vue 及其子项目的文档需求。

每一个由 VuePress 生成的页面都带有预渲染好的 HTML,也因此具有非常好的加载性能和搜索引擎优化(SEO)。同时,一旦页面被加载,Vue 将接管这些静态内容,并将其转换成一个完整的单页应用(SPA),其他的页面则会只在用户浏览到的时候才按需加载。

1. 安装

1.1 依赖环境:node8.0以上的版本

如果没有安装node,可在node官网选择对应操作系统下载安装:https://nodejs.org/zh-cn/

查看node版本:

~ node -vv8.12.0

如果你的node版本低,请把node版本升级到8.0以上。
如何升级node:https://segmentfault.com/a/11...

1.2 安装VuePress

全局安装,打开终端,输入如下命令:

~ npm install -g vuepresshttp fetch GET 200 https://registry.npm.taobao.org/caniuse-db/download/caniuse-db-1.0.30000909.tgz 3993ms
/usr/local/bin/vuepress -> /usr/local/lib/node_modules/vuepress/bin/vuepress.js
+ vuepress@0.14.5
removed 1 package and updated 13 packages in 68.944s

图片描述

1.3 查看vuepress安装位置和版本

本人是Mac电脑,终端:

~ where vuepress
/usr/local/bin/vuepress
➜  ~ vuepress --version
0.14.5

图片描述

2. 启动一个服务

终端创建一个文件夹,并创建一个md文件:

~ mkdir press
~ cd press
# 新建一个 markdown 文件
~ echo '# Hello VuePress!' > README.md

2.1 本地启动服务开发

终端输入命令:

~ vuepress dev .WAIT  Extracting site metadata...DONE  [00:34:16] Build 94707d finished in 5175 ms!> VuePress dev server listening at http://localhost:8080/

clipboard.png

此时在浏览器中输入http://localhost:8080/就能浏览效果了。

图片描述

3. 配置文件说明

配置需要在文档目录下创建一个.vuepress目录,所有 VuePress 相关的文件都将会被放在这里。
终端创建一个文件夹:

mkdir .vuepress

其中有一个最重要的文件.vuepress/config.js,网站的所有文件的配置都在这个文件里面,
需要创建该文件touch .vuepress/config.js,该文件要导出一个JavaScript 对象:

module.exports = {title: '个人文档',description: '练习文档'
}

现在的目录结构:

.
├── .vuepress
│   └── config.js
└── README.md

4. 关于每个页面和路径说明

在vuepress里面,一个md文件就是一个页面,如在下面的目录结构中:

./
├── .vuepress
│   └── config.js
├── README.md
├── home1.md
└── page-a├── README.md├── a.md├── b.md└── 你好.md

由于服务是在./启动的,所以路径以./为服务根路径。

  • 默认主页
    服务启动后,默认找到的是./README.md文件,也就是http://localhost:8080/
  • ./home1.md
    该文件在服务中的路径http://localhost:8080/home1.html
    在vuepress中配置路径/home1
  • ./page-a/README.md
    该文件在服务路径:http://localhost:8080/page-a/时默认找的文件。
    注意URL最后的/不能少,否则会去找./page-a.md文件。
  • ./page-a/a.md
    该文件在服务的路径:http://localhost:8080/page-a/a.html

注: md文件的文件名可以是中文,但是文件夹名字一定要是英文的。

5. 首页设置

vuepress内置了一个主页样式,是Front-matter格式的,
Front-matter教程:https://hexo.io/zh-cn/docs/fr...
首页的文件是根级README.md文件,在文件中写入如下配置:

---
home: true
heroImage: 
actionText: 快速上手 →
actionLink: /zh/guide/
features:
- title: 简洁至上details: 以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。
- title: Vue驱动details: 享受 Vue + webpack 的开发体验,在 Markdown 中使用 Vue 组件,同时可以使用 Vue 来开发自定义主题。
- title: 高性能details: VuePress 为每个页面预渲染生成静态的 HTML,同时在页面被加载的时候,将作为 SPA 运行。
footer: MIT Licensed | Copyright © 2018-present Evan You
---
# Hello VuePress!

保存文件后页面效果如下图所示:
图片描述
注意Front-matter一定要在md文件的顶部,否则不会生效。

6. 导航栏配置

导航栏可能包含你的页面标题、搜索框、 导航栏链接、多语言切换、仓库链接,它们均取决于你的配置。
导航栏通过.vuepress/config.js文件的themeConfig.nav来配置:

// .vuepress/config.js
module.exports = {themeConfig: {nav: [{ text: 'Home', link: '/' },                      // 根路径{ text: 'Guide', link: '/guide/' },{ text: 'External', link: 'https://google.com' }, // 外部链接// 显示下拉列表{text: 'Languages',items: [{ text: 'Chinese', link: '/language/chinese' },{ text: 'Japanese', link: '/language/japanese' }]},// 下拉列表显示分组{text: '高级',items: [{ text: '算法', items: [{ text: '冒泡', link: '/language/chinese' },{ text: '快速', link: '/language/japanese' }] },{ text: '设计模式', items: [{ text: '工厂', link: '/language/chinese' },{ text: '单例', link: '/language/chinese'},] },]}]}
}

文件保存后,页面导航效果:
clipboard.png

vuepress官方文档中关于导航栏的介绍:https://v0.vuepress.vuejs.org...

7. 侧边栏设置

如果你什么也不做,那么一个页面是没有侧边栏的,如下图所示:

clipboard.png

如果想要配置侧边栏,需要用到sidebar参数,该参数可以在配置文件中配置,也可以在每个md文件中配置。

7.1 自动生成侧边栏(仅当前页面)

两种方法:

  1. 在md文件的顶部写上下面代码:

    ---
    sidebar: auto
    ---

    此配置之针对当前md文件生效。
    注:此格式是YAML front matter,一定要在md文件的顶部才会生效。

  2. .vuepress/config.js中配置

    // .vuepress/config.js
    module.exports = {themeConfig: {sidebar: 'auto'}
    }

    在配置文件中设置这句话后,所有页面都会生效。

配置后页面效果:

clipboard.png

7.2 设置侧边栏标题显示的层数

默认情况下,侧边栏会自动显示当前页面的标题(h2~h3)组成的链接,按照页面本身的结构进行嵌套。
侧边栏不会显示h1标题,从h2开始显示,最多显示到h3
可以通过在配置文件中配置themeConfig.sidebarDepth来设置嵌套层级

// .vuepress/config.jsmodule.exports = {themeConfig: {sidebarDepth: 2,}}

或者在md文件的顶部使用YAML front matter来为某个页面重写此值:

---
sidebarDepth: 2
---

sidebarDepth可设置的值:

说明
0禁用标题(headers)链接
1默认值,只显示h2的标题
2可设置的最大值,再大无效, 同时提取h2h3标题

注:如果设置了 sidebar: 'auto' ,侧边栏会显示h2h3标题,此时sidebarDepth的值只有0是生效的(仅显示h2的标题),这里需要注意一下。

在md文件中标题的写法:

# 这是一级标题,对应HTML中<h1>标签## 这是二级标题,对应HTML中<h2>标签### 这是三级标题,对应HTML中<h3>标签
....

7.3 项目只显示一个侧边栏

如果想要所有页面显示一个侧边栏,那么需要在配置文件中添加sidebar字段:

// .vuepress/config.js
module.exports = {themeConfig: {sidebar: ['/','/home1',['/home2', 'home2自定义标题'],'/home3','中文',]}
}

说明:

  1. 可以省略 .md 拓展名
  2. /结尾的路径将会被视为*/README.md
  3. 页面的链接文字自动获取(页面的第一个header),如果明确地在 YAML front matter 中指定页面的标题,则
    显示front matter中的标题。
  4. 也可以指定链接的文字,使用一个格式为 [link, text] 的数组。

md文件顶部使用front matter设置标题的方法:

---
title: 自定义标题
---

配置好后页面效果:

clipboard.png

7.4 侧边栏分组

你可以通过使用对象来将侧边栏划分成多个组

// .vuepress/config.js
module.exports = {themeConfig: {sidebar: [{title: '一组题目',collapsable: false,children: ['/', '/home1',]},{title: '二组题目',children: [['/home2', 'home2自定义题目'], '/home3','/中文',]}]}
}

侧边栏的每个子组默认是可折叠的,你可以设置 collapsable: false 来让一个组永远都是展开状态。

设置后页面效果,其中二组题目是可以折叠的:
clipboard.png

7.5 设置多个侧边栏

如果你想为不同的页面组来显示不同的侧边栏,需要把一个侧边栏下的多个文件放在一个目录下,一个侧边栏一个目录,如下面的文件结构:

.
├── README.md
├── home1.md
├── home2.md
├── home3.md
├── bar
│   ├── README.md
│   ├── one.md
│   └── two.md
└── page-a├── README.md├── a.md└── b.md

配置文件中的sidebar做如下设置:

// .vuepress/config.js
module.exports = {themeConfig: {sidebar: {// /bar/ 一个侧边栏,里面的三个页面共用一个侧边栏'/bar/': ['',           // ./bar/README.md文件,对应页面上/bar/路径'one',        // ./bar/one.md文件,对应页面上/bar/one.html'two',        // ./bar/two.md文件,对应页面上/bar/two.html],'/page-a/': ['','a','b',],// 确保'/'侧边栏被最后定义。VuePress 会按顺序遍历侧边栏配置来寻找匹配的配置。'/': ['','home1','home2','home3',],},}
}

8. 项目部署

目前服务启动的只是本地服务,vuepress还可以把文档生成静态html文件项目,部署到服务器或第三方托管网站上。
生成最终静态文件命令:

vuepress build .

该命令执行完毕后会在.vuepress文件夹下生成dist目录:

该目录里面的文件就是生成的最终静态HTML文件,可把该目录复制到服务器或第三方托管网站部署成自己的文档网站。

8.1 部署到GitHub Pages

如果你打算发布到https://<USERNAME>.github.io/,则可以省略这一步,因为 base 默认即是 "/"

如果你打算发布到https://<USERNAME>.github.io/<REPO>/(也就是说你的仓库在 https://github.com/<USERNAME>/<REPO>),则将base设置为"/<REPO>/"

设置base的值:

// .vuepress/config.js
module.exports = {base: '/press/',     // 仓库名字是pressthemeConfig: {}
}

8.1.2 创建一个自动执行脚本

为了方便部署,可创建一个自动部署脚本文件deploy.sh,文件内容如下:

#!/usr/bin/env shecho '开始执行命令'
# 生成静态文件
echo '执行命令:vuepress build .'
vuepress build .# 进入生成的文件夹
echo "执行命令:cd ./.vuepress/dist\n"
cd ./.vuepress/dist# 初始化一个仓库,仅仅是做了一个初始化的操作,项目里的文件还没有被跟踪
echo "执行命令:git init\n"
git init# 保存所有的修改
echo "执行命令:git add -A"
git add -A# 把修改的文件提交
echo "执行命令:commit -m 'deploy'"
git commit -m 'deploy'# 如果发布到 https://<USERNAME>.github.io
# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git master# 如果发布到 https://<USERNAME>.github.io/<REPO>
# git push -f https://github.com/<USERNAME>/<REPO>.git master:gh-pages# 返回到上一次的工作目录
echo "回到刚才工作目录"
cd -

然后在终端执行如下命令来运行脚本:

bash deploy.sh

还可以使用./deploy.sh命令,不过该命令需要deploy.sh文件是可执行文件,在终端输入如下命令可把文件变成可执行文件:

chmod +x deploy.sh

注意:

  1. vuepress每次执行后都会先删除dist目录,然后从新打包的,所有git都是从新添加在提交。
  2. git推送是强制push的,所以github上仓库只会有一次提交。
  3. 推荐把打包后的文件传到gh-pages分支上,这样就可以源码跟打包后静态文件在一个仓库上。

8.2 GitHub Pages绑定域名

可以在上面的deploy.sh脚本中加入echo 'yuming.cn' > CNAME

# 生成静态文件
vuepress build .# 发布到自定义域名
echo "把域名放到CNAME文件中"
echo 'yuming.cn' > CNAME# 进入生成的文件夹
cd ./.vuepress/dist

注意:如果GitHub Pages绑定域名,那么配置文件中的base参数则需要删除,否则域名访问会失败。

9. 其他一些个性化定制

9.1 修改默认主题

vuepress 0.14版本可以把默认主题使用如下命令复制出来。
如果你的项目名称是press,那么可在终端下:

vuepress eject pressDONE  Copied default theme into /Users/用户名/tmp/press/.vuepress/theme.

这个命令来将默认主题的源码复制到 .vuepress/theme 文件夹下,从而可以对默认主题进行任意的修改。需要注意的是一旦 eject,即使升级 VuePress 你也无法再获得 VuePress 对默认主题的更新。

参考资料

vuepress 0.4版本官方文档:https://v0.vuepress.vuejs.org...
Front-matter 教程:https://hexo.io/zh-cn/docs/fr...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_777718.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的两个免费可以商用的cc0协议图片网站

什么是CC0协议CC0是CC协议(“知识共享”是Creative Commons在中国大陆地区的通用译名&#xff0c;一般简称为CC。CC既是该国际组织的名称缩写&#xff0c;也是一种版权授权协议的统称。)以外的一种新的版权声明协议。采用该协议即代表作者宣布放弃该创作的一切版权&#xff0c;…

【面试精选】关于大型网站系统架构你不得不懂的10个问题

该文已加入笔主的开源项目——JavaGuide&#xff08;一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目),地址:https://github.com/Snailclimb/JavaGuide 。觉得不错的话&#xff0c;记得点个Star。下面这些问题都是一线大厂的真实面试问题&#xff0c;不论是对你面试…

[zz]揭秘全球最大网站Facebook背后的那些软件

http://www.javaeye.com/news/16925 2010年6月&#xff0c;Google公布全球Top 1000网站。Facebook独占鳌头。 以Facebook现在的经营规模&#xff0c;诸多传统服务器的技术均将崩溃或根本无法支撑。那么面对5亿的活跃用户&#xff0c;Facebook的工程师们又将如何让 网站平稳运转…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

政府门户网站的工作量统计和访问统计功能设计分析

1.概述 1.1. 政府门户网站概述 政府门户网站是政府对外发布信息、提供在线办事服务及便民查询服务的窗口&#xff0c;是电子政务的核心组成部分。近年来&#xff0c;政府十分重视政府门户网站的建设&#xff0c;据统计&#xff0c;90%以上的政府部门都建成了门户网站&#xff0…

25佳漂亮的网站底部设计案例欣赏

您可能还喜欢 寻找网页设计灵感的27个最佳网站推荐最新30个漂亮的个人作品集网页设计案例分享35个非常漂亮的单页网站设计案例60佳灵感来自大自然的网页设计作品欣赏分享100佳精美的作品集网站设计案例相对于网站头部来说&#xff0c;关注网站底部设计的人很少。我们平常也能碰…

ruby on rails网站快速上手之环境搭建

近期转到一个新项目组需要用ruby on rails开发网站&#xff0c;于是学习了下相关知识。记录如下&#xff0c;以便将来查看。 1、环境搭建&#xff1a; ruby的环境搭建很简单&#xff0c;可以只安装ruby。由于目的是使用ROR开发网站&#xff0c;所以我之间下载了InstantRails-2.…

学习制作手机网站1

学习制作手机网页 流式布局&#xff1a; 盒子的padding 和margin width都要使使用 百分比来定义 百分比 如果一个盒子没有父元素&#xff0c;那么它的宽度默认就是相对于浏览器的宽度 1 <html lang"en">2 <head>3 <meta charset"UTF-8"…

vue SEO的解决方案

介绍 什么是 SEO SEO&#xff08;Search Engine Optimization&#xff09;搜索引擎优化&#xff0c;是指通过对网站进行站内优化和修复&#xff08;网站Web结构调整、网站内容建设、网站代码优化和编码等&#xff09;和站外优化&#xff0c;从而提高网站的关键词排名以及公司…

C#各种获取IP以及网站MAC什么的

客户端ip:Request.ServerVariables.Get("Remote_Addr").ToString();客户端主机名:Request.ServerVariables.Get("Remote_Host").ToString();客户端浏览器IE&#xff1a;Request.Browser.Browser;客户端浏览器 版本号&#xff1a;Request.Browser.MajorVers…

什么是网站CDN服务,CDN加速原理?

转载&#xff1a;http://server.zzidc.com/fwqcjwt/728.html 摘要&#xff1a;在为您的网站打开速度发愁吗&#xff1f;您有没有发现有些大网站每天拥有几十万或者上百万&#xff0c;甚至几亿用户的访问&#xff0c;而且不同用户分布在全国各地的各个运营商的网络里面&#xff…

个人网站音乐服务器,自己的私人音乐流媒体服务,这才是多少音乐者的梦寐以求的...

自己的私人音乐流媒体服务&#xff0c;这才是多少音乐者的梦寐以求的今天音乐的一个棘手问题是——它分散了。除了音乐流媒体服务之外&#xff0c;您可能还有CD&#xff0c;MP3文件甚至其他数字下载。如果你想把你所有的音乐放在一个地方&#xff0c;你必须支付流媒体服务的费用…

织梦同步静态文件到服务器,静态网站添加到织梦

静态网站添加到织梦 内容精选换一换表1列出了虚拟私有云VPC的常用功能。在使用虚拟私有云VPC之前&#xff0c;建议您先通过基本概念介绍了解子网、路由表、安全组、弹性公网IP等基本概念&#xff0c;以便更好地理解虚拟私有云VPC提供的功能。当AppCube平台提供的全局高级组件无…

网站部署笔记

今天部署asp.net网站的时候遇到了两个问题 &#xff1a; 一、网站部署完毕后出现了404的问题 查资料发现还是少配置 在web.config中的configuration配置节点下加入如下配置节点即可 <system.webServer>   <defaultDocument>     <files>       &…

分享织梦DedeCMS设置全站Html网站地图教程

全站Html网站地图的作用就是方便搜索蜘蛛爬行&#xff0c;收录网站&#xff0c;增加用户体验。 详细的功能说明请看《什么是网站地图》一文。 下面织梦设置全站地图的步骤&#xff1a; 第一步&#xff0c;登陆DedeCMS后台&#xff1a;核心 - 频道模型- 自由列表管理&#xff0c…

使用ThinkPHP框架快速开发网站(多图)

使用ThinkPHP框架快速搭建网站这一周一直忙于做实验室的网站&#xff0c;基本功能算是完成了。比较有收获的是大概了解了ThinkPHP框架。写一些东西留作纪念吧。如果对于同样是Web方面新手的你有一丝丝帮助&#xff0c;那就更好了挖。 以前用PHP做过一个很蹩脚的网站&#xff0c…

网站盈利模式其实只有三种

在做网站大家都会考虑关于盈利模式的问题&#xff0c;如果没有清楚的盈利模式&#xff0c;很多人都不会大力去投资做这个网站&#xff0c;而盈利模式往往是目前来讲一直没有创新的地方&#xff0c;因为盈利模式只有以下三种。 为了不让大家认为我在说这三种盈利模式是吹牛逼的&…

如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备

本系列所有文章 如何一步一步用DDD设计一个电商网站&#xff08;一&#xff09;—— 先理解核心概念 如何一步一步用DDD设计一个电商网站&#xff08;二&#xff09;—— 项目架构 如何一步一步用DDD设计一个电商网站&#xff08;三&#xff09;—— 初涉核心域 如何一步一步用…

新网站如何做SEO优化

&ldquo;百度快照变慢了、百度收录问题、关键词掉了&rdquo;&#xff0c;这是在卢松松留言本被经常问及的问题&#xff0c;新手站长往往会因此吃不下饭、睡不着觉&#xff0c;网站的推广是一个漫长的过程&#xff0c;&ldquo;心急吃不了热豆腐&rdquo;&#xff0c;…

《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (1):大型网站发展历程...

网站架构发展 1 初始阶段 -- 只有一台服务器 2 应用服务和数据服务分离 3 使用缓存改善网站性能 4 使用应用服务器集群改善网站并发处理能力 5 数据库读写分离 6 使用反向代理和CDN加速网站响应 反向代理和CDN的基本原理都是缓存&#xff0c;区别在于CDN部署在网络提供商的机房…