VuePress 搭建指南:从基础到部署
VuePress 搭建指南:从基础到部署
dong4j使用 vuepress 搭建自己的博客
Vuepress 介绍
官网: https://vuepress.vuejs.org/
类似 hexo 一个极简的静态网站生成器, 用来写技术文档不能在爽. 当然搭建成博客也不成问题.
Vuepress 特点
- 响应式, 也可以自定义主题与 hexo 类似
- 内置 markdown (还增加了一些扩展), 并且可以在其使用 Vue 组件
- Google Analytics 集成
- PWA 自动生成 Service Worker
快速上手
安装
初始化项目
1 | yarn init -y |
安装 vuepress
1 | yarn add -D vuepress |
全局安装 vuepress
1 | yarn global add vuepress |
新建一个 docs 文件夹
1 | mkdir docs |
设置下 package.json
1 | { |
写作
1 | yarn docs:dev # 或者: npm run docs:dev |
也就是运行开发环境, 直接去 docs 文件下书写文章就可以, 打开 http://localhost:8080/
可以预览
构建
build 生成静态的 HTML 文件, 默认会在 .vuepress/dist
文件夹下
1 | yarn docs:build # 或者: npm run docs:build |
基本配置
在 .vuepress
目录下新建一个 config.js
, 他导出一个对象
一些配置可以参考 官方文档 , 这里我配置常用及必须配置的
网站信息
1 | module.exports = { |
导航栏配置
1 | module.exports = { |
侧边栏配置
可以省略 .md
扩展名, 同时以 /
结尾的路径将会被视为 */README.md
1 | module.exports = { |
上面封装的 genSidebarConfig
函数
1 | function genSidebarConfig(title) { |
支持侧边栏分组 (可以用来做博客文章分类) collapsable 是当前分组是否展开
1 | module.exports = { |
默认主题修改
主题色修改
在 .vuepress
目录下的创建一个 override.styl
文件
1 | $accentColor = #3eaf7c // 主题色 |
自定义页面类
有时需要在不同的页面应用不同的 css, 可以先在该页面中声明
1 | --- |
然后在 override.styl
中书写
1 | .theme-container.custom-page-class { |
PWA 设置
设置 serviceWorker 为 true, 然后提供 Manifest 和 icons,
可以参考我之前的 《PWA 介绍及快速上手搭建一个 PWA 应用》
1 | module.exports = { |
部署上线
设置基础路径
在 config.js
设置 base
例如: 你想要部署在 https://foo.github.io 那么设置 base 为 /
,base 默认就为 /
, 所以可以不用设置
想要部署在 https://foo.github.io/bar/, 那么 base
应该被设置成 "/bar/"
1 | module.exports = { |
base
将会自动地作为前缀插入到所有以 /
开始的其他选项的链接中, 所以你只需要指定一次.
构建与自动部署
用 gitHub 的 pages
或者 coding 的 pages 都可以, 也可以搭建在自己的服务器上.
将 dist
文件夹中的内容提交到 git 上或者上传到服务器就好
1 | yarn docs:build # 或者: npm run docs:build |
另外可以弄一个脚本, 设置持续集成, 在每次 push 代码时自动运行脚本
deploy.sh
1 |
|
注意事项 (坑)
- 把你想引用的资源都放在
.vuepress
目录下的public
文件夹 - 给 git 仓库绑定了独立域名后, 记得修改
base
路径 - 设置侧边栏分组后默认会自动生成 上 / 下一篇链接
- 设置了自动生成侧边栏会把侧边栏分组覆盖掉
- 设置 PWA 记得开启 SSL
vuepress-theme-reco
该主题几乎继承 VuePress
默认主题的一切功能, 所以本文档只负责介绍该主题扩展的功能, 如果您想要了解默认主题的一些功能,
请移步 官方文档.
Branch
branch | vuepress | vuepress-theme-reco |
---|---|---|
demo/0.x | 0.x | 0.x |
demo/1.x | 1.x | 1.x |
安装
1 | npm install vuepress-theme-reco -dev--save |
使用
1 | // 修改 /docs/.vuepress/config.js |
分类和标签
添加博客配置
1 | // change /docs/.vuepress/config.js |
写文章时添加分类和标签
1 | --- |
请注意,
categories
和categories
要以数组的方式填写.
某些页面的侧边栏为 false
呢?因为您启用了分类, 这与自定义侧边栏功能有点冲突, 所以您全局打开自动侧边栏功能, 然后在不需要侧标记的地方关闭它.
添加时间轴
添加导航按钮
1 | // change /docs/.vuepress/config.js |
添加所需的文件
/docs/timeLine/README.md
1 | --- |
写文章时添加日期
1 | --- |
评论 (valine)
带有内置了 valine 评论功能, 如果要打开此功能, 只需配置你的 config.js
1 | // 更改 /docs/.vuepress/config.js |
参数
参数 | 功能 | 默认值 | 是否必填 |
---|---|---|---|
appId | 从 LeanCloud 的应用中得到的 appId | 无 | yes |
appKey | 从 LeanCloud 的应用中得到的 APP Key | 无 | yes |
placeholder | 评论框占位提示符 | just go go | no |
notify | 评论回复邮件提醒, 请参考 [配置](https://github.com/xCss/Valine/wiki/Valine- 评论系统中的邮件提醒设置) | false | no |
verify | 验证码服务 | false | no |
avatar | Gravatar 头像展示方式, 更多信息请查看 头像配置 | retro | no |
visitor | 文章访问量统计 | true | no |
recordIP | recordIP | false | no |
如果 valine 的获取评论的接口报 404
错误的话, 不用担心, 这是因为你还没有添加评论, 只要存在 1 条评论, 就不会报错了, 这是 leanCloud
的请求处理操作而已.
加密功能
项目加密
如果项目具有私密性, 不希望被公开, 只有填入密钥登录后(关闭标签后登录失效), 才能进入内容页面. 以数组的格式设置 keys
, 可以设置多个密码,
数组的值必须是字符串.
1 | // 更改 /docs/.vuepress/config.js |
文章加密
如果项目是公开的, 而某些文章可能需要加密, 需要在 frontmatter
以数组的格式设置 keys
, 可以设置多个密码, 数组的值必须是字符串.
1 | --- |
Config.js 配置
移动端优化
在移动端, 搜索框在获得焦点时会放大, 并且在失去焦点后可以左右滚动, 这可以通过设置元来优化.
1 | module.exports = { |
图标
您可以在导航菜单中添加图标, 如下所示:
1 | { text: 'Tags', link: '/tags/', icon: 'reco-tag' } |
备案信息和项目开始时间
1 | module.exports = { |
设置作者姓名
- 设置全局作者姓名
1 | module.exports = { |
- 为单篇文章设置作者姓名
1 | --- |
华为文案
如果不希望显示 “华为” 文案, 可以这样关闭.
1 | module.exports = { |
首页配置
主题的主页的默认风格偏文档, 并不像一个博客, 所以从 vuepress-theme-reco@1.0.0-alpha.25
开始, 增加博客风格首页布局.
默认首页配置
heroImage
- 如果您的 heroImage 具有您的网站标题, 则可能需要设置值
isShowTitleInHome
false
以使标题不显示.
1 | # this is your homepage |
- 如果你想改变 heroImage 的风格, 你可以设置值
heroImageStyle
来实现你想要的效果
1 | # 这是你的主页 |
博客风格首页设置
- 指定
type: 'blog'
1 | // change /docs/.vuepress/config.js |
- 设置首页的背景图片和头像
1 | # 这是你的主页 |
添加摘要
在 markdown 代码中, 您将看到注释, 注释前面的代码将显示在列表页面上的文章摘要中.
vuepress-theme-reco-cli
1 | npm install vuepress-theme-reco-cli |
if yarn, you can do this way:
1 | yarn add vuepress-theme-reco-cli |
Github Pages
github pages 分为 2 中
- 个人站点
- 项目站点
2 种站点的 url 有点区别, 在使用 vuepress 部署时遇到点坑, 这里记录一下
个人站点
个人站点在创建时, 必须使用 username.github.io
作为项目名, 这样不需要其他设置, 只需要 push html 代码即可直接部署
使用 vuepress 时, 不再需要设置 base
1 | title: "Black House", |
项目站点
项目站点 push 需要配置 github pages, url 为 https://username.github.io/projectname/
这时必须配置 base
, 不然将导致页面样式错误