如何采用VuePress构建文档网站
作者:倾城
博客: https://www.codingbrick.com
寄语:当你意识到面子不重要时,你才算个真正的成年人。
在建设博客的初期,我采用GitBook构建了编码专家的专栏系统。GitBook是基于Node.js的静态页构建组件,可以将Markdown文档渲染为静态页,支持插件扩展,使用非常简单。由于它不支持深度的定制,使用了一段时间后,无法满足我的要求了。
有一天我看到某博客采用VuePress,简洁美观、功能强大。VuePress的帮助文档非常详实,是Vue团队的诚意之作。正好我有一些Vue开发的功底,犹如出狱的色狼碰上了洗澡的刘亦菲。如果时间可以倒流,我绝对不会用WordPress来构建我的博客。WordPress固然成熟,设计的太“重”了。
VuePress 是一个 Vue 驱动的静态网站生成器,使用Markdown编写文档,提供成熟的主题、侧边栏、搜索功能等,轻松创建如何结构清晰、易于导航和搜索的文档网站。VuePress集成了自动化部署工具,可以将生成的静态网站部署到各种托管平台上,如GitHub Pages、Netlify等。VuePress还支持自动化的更新和发布,使得您可以轻松地更新网站内容,并保持与代码仓库的同步。(来自VuePress官网)
1 安装Nodejs
根据Vuepress官网的部署指南,Vuepress v2.0依赖Node.js版本是v16.19.0+。推荐采用 yum 方式安装首先确认镜像地址是否可用,文件路径是:/etc/yum.repos.d/CentOS-Base.repo,参考内容如下所示:
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
yum 方式安装的默认版本是16.18.1,达不到VuePress 2.0需要的最小版本16.19.0,必须指定版本号,命令如下:
# 检查可用版本
yum list available nodejs
# 安装指定版本
yum install nodejs-16.20.0
有时候 yum 源里面没有相应的Node.js版本,可以采用n模块安装指定版本,命令如下:
# 首先安装npm模块
yum install npm
# 利用npm安装n模块
npm install -g n
# 安装最新版
n latest
# 或者指定版本
n 16.20.0
# 显示版本号,证明安装成功
node -v
2 初始化项目
VuePress的默认主题比较简陋,缺乏SEO、Markdown 语法扩展等功能,推荐直接使用vuepress-theme-hope。这个版本提供了更加美观的主题,默认集成许多实用的插件,大大增强了原有的功能。
首先初始化项目,命令如下:
npm init vuepress-theme-hope
这个命令会下载所有的依赖包,根据提示依次设置项目名称、版本号等信息,最终会生成带有空页面的初始工程。
采用如下命令启动调试:
npm run docs:dev
开发完毕后,可以构建静态页部署到服务器上,静态页默认输出路径是 .vuepress/dist/,构建命令如下:
npm run docs:build
3 迁移项目
如果重新部署项目,需要再次安装依赖包,下载项目源码后,在根目录执行命令:
npm install vuepress@next
npm install vuepress-theme-hope
4 开发经验
4.1 配置插件
VuePress支持很多插件,以安装搜索插件为例,命令如下:
# 安装搜索插件
npm i -D vuepress-plugin-search-pro
在 config.ts 文件里面找到 defineUserConfig,在配置项里增加代码:
plugins: [
searchProPlugin({
// 索引全部内容
indexContent: true,
hotReload: true,
// 为分类和标签添加索引
customFields: [
{
getter: (page) => page.frontmatter.category,
formatter: "分类:$content",
},
{
getter: (page) => page.frontmatter.tag,
formatter: "标签:$content",
}
]
})
]
4.2 百度统计
在 config.ts文件里面找到 defineUserConfig,在这个配置项的 header 里插入百度统计的脚本,如下所示:
head: [
// 百度统计
[
"script",
{},
`
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?去百度统计网站获取相应代码";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
`
]
]
新建文件 enhanceApp.ts ,加入如下内容:
export default ({ router }) => {
/**
* vuepress 是基于 vue 的单页面应用,页面切换过程中不会重新加载页面,不会触发百度统计。
* 以下代码用于监听路由切换事件,当切换页面时,手动上报百度统计
*/
router.beforeEach((to, from, next) => {
console.log("切换路由", to.fullPath, from.fullPath);
//触发百度的pv统计
if (typeof _hmt != "undefined") {
if (to.path) {
_hmt.push(["_trackPageview", to.fullPath]);
console.log("上报百度统计", to.fullPath);
}
}
// continue
next();
});
};
4.3 辅助脚本
懒得去记忆npm原始命令,编写一个Shell脚本用来构建站点,代码如下:
#!/bin/sh
echo "please choose your option(1、2):"
echo "1: hot deploy for developing"
echo "2: build static page(default path: .vuepress/dist/)"
read item
if [ $item == 1 ]
then
git pull
npm run docs:dev
elif [ $item == 2 ]
then
git pull
npm run docs:build
else
choose
fi
5 参考文档
https://v2.vuepress.vuejs.org/zh/guide/
https://theme-hope.vuejs.press/zh/guide/
如何采用VuePress构建文档网站的更多相关文章
- 如何使用 VuePress 搭建一个 element-ui 风格的文档网站
如何使用 VuePress 搭建一个 element-ui 风格的文档网站 { "devDependencies": { "vuepress": "1 ...
- VUE3.0发布,自己搞个文档网站
9月19日,尤大神发表了VUE3.0版本的演说,强大且震撼,这两天一直在找网站文档,可能还未被百度收录,未找到文档网站.后来在github上面找到了中文代码. 地址为:https://github.c ...
- 如何利用启明星Portal门户系统的Page模块构建文档库
利用启明星门户系统的Page模块构架可以搭建企业内部的文档管理系统. (一)应用背景 企业内部通常都会使用共享网盘的方式来存放不同部门之间的文档,例如管理员在服务器上对人事部门增加人事部文档文件夹. ...
- 本号讯 | 永不消失的协作“空间站”开课;微软推出微软云Azure文档网站
8月29日,针对企业常面临的“协同办公”困难,开展以“还有这种操作?永不消失的协作'空间站'”为主题的协同办公培训课. 课程内容包含:在Office 365环境中,如何利用Teams与Groups等功 ...
- 基于slate构建文档编辑器
基于slate构建文档编辑器 slate.js是一个完全可定制的框架,用于构建富文本编辑器,在这里我们使用slate.js构建专注于文档编辑的富文本编辑器. 描述 Github | Editor DE ...
- 无需编译、快速生成 Vue 风格的文档网站
无需编译.快速生成 Vue 风格的文档网站 https://docsify.js.org/#/#coverpage https://github.com/QingWei-Li/docsify/
- wpf采用Xps实现文档显示、套打功能
原文:wpf采用Xps实现文档显示.套打功能 近期的一个项目需对数据进行套打,用户要求现场不允许安装office.页面预览显示必须要与文档完全一致,xps文档来对数据进行处理.Wpf的Document ...
- 使用 Hexo 创建项目文档网站
当我们发布一个开源项目的时候,最重要的事情之一就是要创建项目文档.对使用项目的用户来说,文档是非常有必要的,通常我们可以使用下面这些方式来创建文档: GitHub Wiki:在 Github 上我们可 ...
- 使用Docsify做文档网站的详细配置教程
使用Docsify做文档网站的详细配置教程 作者:xhemj 没错,它叫Docsify. xhemj的文档中心就是用这个写的 开源地址:https://github.com/docsifyjs/doc ...
- 快速创建vuepress项目(使用vuepress写文档)
vuepress的官方文档:https://vuepress.vuejs.org/zh/guide/ 参考:https://segmentfault.com/a/1190000016333850 ht ...
随机推荐
- 手把手教你python数据处理项目——探索ebay汽车销售数据
探索Ebay汽车销售数据 一.实验目的 1. 熟悉清理数据的流程: 2. 分析Ebay二手车销售数据: 3. 了解jupyter notebook为pandas提供的一些独特特性. 二.实验开发环 ...
- 结构化思维助力Prompt创作:专业化技术讲解和实践案例
结构化思维助力Prompt创作:专业化技术讲解和实践案例 最早接触 Prompt engineering 时, 学到的 Prompt 技巧都是: 你是一个 XX 角色- 你是一个有着 X 年经验的 X ...
- C++ STL 容器-array类型
C++ STL 容器-array类型 array是C++11STL封装的数组,内存分配在栈中stack,绝对不会重新分配,随机访问 创建和初始化 // 下面的等同于int a[10]; std::ar ...
- idea导入spring源码运行缺失cglib和objenesis的jar包的办法【亲测有效】
idea导入spring源码运行缺失cglib和objenesis的jar包的办法[亲测有效] 亲测有效,网上说的大多废话 上图,操作如下,运行gradle
- 牛客周赛 Round 31(A~F)
目录 A B C D E F A #include <bits/stdc++.h> #define int long long #define rep(i,a,b) for(int i = ...
- 为什么Sync.Pool不需要加锁却能保证线程安全
1. 简介 我们在 Sync.Pool: 提高go语言程序性能的关键一步 一文中,已经了解了使用sync.Pool来实现对象的复用以减少对象的频繁创建和销毁,以及使用sync.Pool的一些常见注意事 ...
- 日常办公——Word中重复标题的设置
在Word中,遇到表格分页时,可以设置重复标题,如下图所示:
- eclipse错误之Errors occurred during the build. Errors running builder 'JavaScript Validator' on project
把JavaScript Validator去掉.去掉的方法是:选择一个项目--右键Properties--Builders(排第二)--点一下右侧会有四项--取消第一项"JavaScript ...
- 28_FFmpeg音视频解封装格式
目录 一.什么是封装格式 二.使用 FFmpeg 实现解封装 1.创建解封装上下文打开流媒体文件 2.检索流信息 2.1.检索流信息 2.2.导出流信息到控制台 3.初始化音频解码器查找合适的音视流和 ...
- lazy-nvim插件管理器基础入门
一篇通过使用lazy.nvim进行nvim插件管理的入门笔记. 基础安装 init.lua 路径:stdpath("config")/init.lua stdpath(" ...