最终效果图

网站:https://chandler712.github.io/

一.前言

VuePress 是尤雨溪推出的支持 Vue 及其子项目的文档需求而写的一个项目,UI简洁大方,官方文档详细容易上手

二.搭建

1.新建一个工程目录为project

可以手动右键新建,也可以使用下面的命令新建文件夹:

使用git bash终端

$ mkdir  project

2. 全局安装VuePress

$ npm install -g vuepress

3. project文件夹中,使用命令行初始化项目--创建一个package.json

$  npm init -y

将会创建一个package.json文件


  1. {
  2. "name": "project",
  3. "version": "1.0.0",
  4. "description": "",
  5. "main": "index.js",
  6. "scripts": {
  7. "test": "echo \"Error: no test specified\" && exit 1"
  8. },
  9. "keywords": [],
  10. "author": "",
  11. "license": "ISC"
  12. }

  

4. 在project的根目录下新建docs文件作为项目文档

$ mkdir docs

5.在docs文件夹下创建.vuepress文件夹:

$ mkdir .vuepress

所有 VuePress 相关的文件都将会被放在这里

6.在.vuepress文件夹下面创建config.js

$ touch config.js

config.js是VuePress必要的配置文件,它导出一个javascript对象。

先加入如下配置后期再改:

  1. module.exports = {
  2. title: 'Hello VuePress',
  3. description: 'Just playing around'
  4. }

7. .vuepress文件夹下面创建public文件夹

$ mkdir public

这个文件夹是用来放置静态资源

8. 首页内容(像VuePress文档主页一样)

在docs文件夹下面创建一个README.md

$ touch README.md

默认的主题提供了一个首页,像下面一样设置home:true即可,可以把下面的设置放入README.md中,待会儿将会看到跟VuePress一样的主页。

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

  

  1.  

放一张图片到public文件夹中替换logo.jpg

简单的项目结构已经搭好了:

  1. project

  2. ├─── docs

  3. │   ├── README.md

  4. │   └── .vuepress

  5. │       ├── public

  6. │       └── config.js

  7. └── package.json

1.在 package.json 里添加两个启动命令:

  1. {
  2. "scripts": {
  3. "docs:dev": "vuepress dev docs",
  4. "docs:build": "vuepress build docs"
  5. }
  6. }

2.启动你的VuePress:测试效果

进入工程目录启动

$ npm run docs:dev

打开 http://localhost:8080/

三.测试完毕后构建自己的网页

 

1.导航栏配置:

在docs文件下建立如下文件

关于--文件guide-内容guide.md

博客--文件index

--文件html-内容one.md

--文件css-内容one.md

--文件javascript-内容javascript.md

--文件nodejs-内容nodejs.md

--文件react-内容react.md

--文件vue-内容vue.md

--文件vx-内容vx.md

--文件others-内容others.md

Python--文件python-内容python

2.导航栏配置config.js:

  1. themeConfig: {

  2. lastUpdated: 'Last Updated', // 文档更新时间:每个文件git最后提交的时间
  3. displayAllHeaders: true, // 默认值:false
  4. activeHeaderLinks: false, // 默认值:true
  5. nav: [
  6. { text: '首页', link: '/'},
  7. { text: 'Python', link: '/python/python.md' },
  8. {
  9. text: '博客',
  10.  
  11. items: [
  12. { text: 'Html', link: '/index/html/one.md' },
  13. { text: 'css', link: '/index/css/one.md' },
  14. { text: 'Javascript', link: '/index/javascript/javascript.md' },
  15. { text: 'nodejs', link: '/index/nodejs/nodejs.md' },
  16. { text: 'vue', link: '/index/vue/vue.md' },
  17. { text: 'react', link: '/index/react/react.md' },
  18. { text: 'vx', link: '/index/vx/vx.md' },
  19. { text: 'others', link: '/index/others/others.md' },
  20. ]
  21. },
  22. {
  23. text: '链接',
  24. //ariaLabel: 'Language Menu',
  25. items: [
  26. { text: 'Github', link: 'https://github.com/Chandler712/practice' },
  27. { text: '博客园', link: 'https://www.cnblogs.com/chandlerwong/' },
  28. ]
  29. },
  30.  
  31. {text:'关于', link:'/guide/guide.md'},
  32. ],
  33. }

  


3.侧边栏配置config.js:

  1. themeConfig: {
  2.  
  3. sidebar: 'auto',//自动添加标题到侧栏
  4. sidebarDepth: 2, // e'b将同时提取markdown中h2 和 h3 标题,显示在侧边栏上。
  5. lastUpdated: 'Last Updated', // 文档更新时间:每个文件git最后提交的时间
  6. sidebar: {
  7.  
  8. '/index/': [
  9. // 侧边栏在 /index/ 目录上
  10. '/index/',
  11. {
  12. title: 'Html',
  13. collapsable: false, // 不可折叠
  14. children: [
  15.  
  16. '/html/one.md',
  17.  
  18. ]
  19. },
  20. {
  21. title: 'CSS',
  22. collapsable: false, // 不可折叠
  23. children: [
  24. '/index/css/one.md',
  25.  
  26. ]
  27. },
  28. // 侧边栏在 /javascript/ 目录上
  29. {
  30. title: 'Javascript',
  31. collapsable: true, // 不可折叠
  32. children: [
  33. '/index/javascript/javascript.md'
  34. ]
  35. },
  36. // 侧边栏在 /node.js/ 目录上
  37. {
  38. title: 'nodejs',
  39. collapsable: true, // 不可折叠
  40. children: [
  41. '/index/nodejs/nodejs.md',
  42.  
  43. ]
  44. },
  45. // 侧边栏在 /react.js/ 目录上
  46. {
  47. title: 'react',
  48. collapsable: true, // 不可折叠
  49. children: [
  50. '/index/nodejs/react.md',
  51.  
  52. ]
  53. },
  54. // 侧边栏在 /others/ 目录上
  55. {
  56. title: '其它',
  57. collapsable: true, // 不可折叠
  58. children: [
  59. '/index/others/others.md',
  60.  
  61. ]
  62. },
  63. // 侧边栏在 /vue.js/ 目录上
  64. {
  65. title: 'vuejs',
  66. collapsable: true, // 不可折叠
  67. children: [
  68. '/index/vue/vue.md',
  69.  
  70. ]
  71. },
  72. // 侧边栏在 /vx/ 目录上
  73. {
  74. title: 'vx',
  75. collapsable: true, // 不可折叠
  76. children: [
  77. '/index/vx/vx.md',
  78.  
  79. ]
  80. },
  81. ]
  82. }
  83.  
  84. },
  85. }

  

  1.  

 

显示所有页面的标题链接

默认情况下,侧边栏只会显示由当前活动页面的标题(headers)组成的链接,你可以将 themeConfig.displayAllHeaders 设置为 true 来显示所有页面的标题链接:

  1. themeConfig: { displayAllHeaders: true // 默认值:false }

活动的标题链接

默认情况下,当用户通过滚动查看页面的不同部分时,嵌套的标题链接和 URL 中的 Hash 值会实时更新,这个行为可以通过以下的配置来禁用:

  1. themeConfig: { activeHeaderLinks: false, // 默认值:true }

4.完整的config.js配置

  1. module.exports = {
  2. title: '个人文档',
  3. description: '去留无意,闲看庭前花开花落;宠辱不惊,漫随天外云卷云舒',
  4. head: [
  5. ['link', { rel: 'icon', href: '/favicon.ico' }], // 增加一个自定义的 favicon(网页标签的图标)
  6. ],
  7. serviceWorker: true,
  8. base: '/', // 这是部署到github相关的配置 使用'/'时
  9. //部署到 https://<USERNAME>.github.io USERNAME=你的用户名
  10. markdown: {
  11. lineNumbers: true // 代码块显示行号
  12. },
  13. themeConfig: {
  14.  
  15. sidebar: 'auto',
  16. sidebarDepth: 2, // e'b将同时提取markdown中h2 和 h3 标题,显示在侧边栏上。
  17. lastUpdated: 'Last Updated', // 文档更新时间:每个文件git最后提交的时间
  18.  
  19. //导航栏配置
  20. nav: [
  21. { text: '首页', link: '/'},
  22. { text: 'Python', link: '/python/python.md' },
  23. {
  24. text: '博客',
  25.  
  26. items: [
  27. { text: 'Html', link: '/index/html/one.md' },
  28. { text: 'css', link: '/index/css/one.md' },
  29. { text: 'Javascript', link: '/index/javascript/javascript.md' },
  30. { text: 'nodejs', link: '/index/nodejs/nodejs.md' },
  31. { text: 'vue', link: '/index/vue/vue.md' },
  32. { text: 'react', link: '/index/react/react.md' },
  33. { text: 'vx', link: '/index/vx/vx.md' },
  34. { text: 'others', link: '/index/others/others.md' },
  35. ]
  36. },
  37.  
  38. {
  39. text: '链接',
  40. //ariaLabel: 'Language Menu',
  41. items: [
  42. { text: 'Github', link: 'https://github.com/Chandler712/practice' },
  43. { text: '博客园', link: 'https://www.cnblogs.com/chandlerwong/' },
  44. ]
  45. },
  46.  
  47. {text:'关于', link:'/guide/guide.md'},
  48. ],
  49. displayAllHeaders: true, // 默认值:false
  50. activeHeaderLinks: false, // 默认值:true
  51.  
  52. //侧边栏配置
  53. sidebar: {
  54.  
  55. '/index/': [
  56. // 侧边栏在 /index/ 目录上
  57. '/index/',
  58. {
  59. title: 'Html',
  60. collapsable: false, // 不可折叠
  61. children: [
  62.  
  63. '/html/one.md',
  64.  
  65. ]
  66. },
  67. {
  68. title: 'CSS',
  69. collapsable: false, // 不可折叠
  70. children: [
  71. '/index/css/one.md',
  72.  
  73. ]
  74. },
  75. // 侧边栏在 /javascript/ 目录上
  76. {
  77. title: 'Javascript',
  78. collapsable: true, // 不可折叠
  79. children: [
  80. '/index/javascript/javascript.md'
  81. ]
  82. },
  83. // 侧边栏在 /node.js/ 目录上
  84. {
  85. title: 'nodejs',
  86. collapsable: true, // 不可折叠
  87. children: [
  88. '/index/nodejs/nodejs.md',
  89.  
  90. ]
  91. },
  92. // 侧边栏在 /react.js/ 目录上
  93. {
  94. title: 'react',
  95. collapsable: true, // 不可折叠
  96. children: [
  97. '/index/nodejs/react.md',
  98.  
  99. ]
  100. },
  101. // 侧边栏在 /others/ 目录上
  102. {
  103. title: '其它',
  104. collapsable: true, // 不可折叠
  105. children: [
  106. '/index/others/others.md',
  107.  
  108. ]
  109. },
  110. // 侧边栏在 /vue.js/ 目录上
  111. {
  112. title: 'vuejs',
  113. collapsable: true, // 不可折叠
  114. children: [
  115. '/index/vue/vue.md',
  116.  
  117. ]
  118. },
  119. // 侧边栏在 /vx/ 目录上
  120. {
  121. title: 'vx',
  122. collapsable: true, // 不可折叠
  123. children: [
  124. '/index/vx/vx.md',
  125.  
  126. ]
  127. },
  128. ]
  129. }
  130.  
  131. },
  132.  
  133. algolia: {
  134. apiKey: '<API_KEY>',
  135. indexName: '<INDEX_NAME>'
  136. }
  137. }

  

  1.  

5.搜索框匹配

  1. algolia: { apiKey: '<API_KEY>', indexName: '<INDEX_NAME>'             }

测试--进入工程目录

$ npm run docs:dev

四.部署到github

1.登录github账号新建一个repository

仓库名结尾以<github的用户名>.github.io

对应的config.js的配置

  1. module.exports = {base: '/',}

不用clone到本地仓库

 

2.在project根目录创建脚步文件--自动部署到github

$ touch deploy.sh

  1. !/usr/bin/env sh# 确保脚本抛出遇到的错误set -e
  2. # 生成静态文件npm run docs:build
  3. # 进入生成的文件夹cd docs/.vuepress/dist
  4.  
  5. git initgit add -Agit commit -m 'deploy'
  6.  
  7. git push -f git@github.com:Chandler712/Chandler712.github.io.git master
  8.  
  9. cd

  

3.设置package.json:

  1. {
  2. "scripts": {

  3. "docs:dev": "vuepress dev docs",
  4. "docs:build": "vuepress build docs",
  5. "deploy": "bash deploy.sh"
  6. }
  7. }

  

4.通过git bash 终端输入命令自动部署到github

$ npm run deploy

 

结束

记录一次基于VuePress + Github 搭建个人博客的更多相关文章

  1. Mac上基于hexo+GitHub搭建个人博客(一)

    原文地址: http://fanjiajia.cn/2018/11/23/Mac%E4%B8%8A%E5%9F%BA%E4%BA%8Ehexo+GitHub%E6%90%AD%E5%BB%BA%E4% ...

  2. 【教程向】——基于hexo+github搭建私人博客

    前言 1.github pages服务生成的全是静态文件,访问速度快: 2.免费方便,不用花一分钱就可以搭建一个自由的个人博客,不需要服务器不需要后台: 3.可以随意绑定自己的域名,不仔细看的话根本看 ...

  3. 基于 Hexo 从零开始搭建个人博客(二)

    阅读本篇前,请先配置好相应的环境,请仔细阅读教程 基于 Hexo 从零开始搭建个人博客(一). 原文链接:基于 Hexo 从零开始搭建个人博客(二) 前言 博客搭建过程遇到任何问题,优先在本页面搜索, ...

  4. 基于 Hexo 从零开始搭建个人博客(五)

    阅读本篇前,请先阅读前几篇文章: 基于 Hexo 从零开始搭建个人博客(一) 基于 Hexo 从零开始搭建个人博客(二) 基于 Hexo 从零开始搭建个人博客(三) 基于 Hexo 从零开始搭建个人博 ...

  5. 《Hexo+github搭建个人博客》

    <Hexo+github搭建个人博客> 文/冯皓林 完稿:2016.4.22-2016.4.23 注意:本节教程只针对Windows用户.本教程由无人赞助,赞助写出. <Hexo+g ...

  6. jekyll+github搭建个人博客总结

    jekyll+github搭建个人博客 经过一天多的折腾,终于算是搭建好了自己的个人博客,看到有些社区评论说:在windows下用jekyll搭建静态博客,简直就自讨苦吃,但是都到一半了,有什么办法呢 ...

  7. 使用Node.js+Hexo+Github搭建个人博客(续)

    一.写在前面 在我的上一篇博客<使用Nodejs+Hexo+Github搭建个人博客>中,已经介绍了如何使用 Hexo 在 Github Pages 上搭建一个简单的个人博客.该篇博文将在 ...

  8. 如何用hexo+github搭建个人博客

    搭建环境 1.安装 Node.js: https://nodejs.org/en/ windows下点击链接,下载安装即可;Linux下更加简单,在终端下输入sudo apt-get install ...

  9. Hexo和github搭建个人博客 - 朱晨

    GitHub账号 mac/pc 环境 12 node.jsgit 创建GitHub仓库 登陆GitHub,创建一个新的Respository Repository name叫做{username}.g ...

随机推荐

  1. 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器

    剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...

  2. 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?

    JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...

  3. 前端云原生,以 Kubernetes 为基础设施的高可用 SSR(Vue.js) 渲染微服务初探(开源 Demo)

    背景 笔者在逛掘金的时候,有幸看到掘友狼族小狈开源的 genesis - 一个可以支持 SSR 和 CSR 渲染的微服务解决方案.总体来说思想不错,但是基于 Kubernetes 云原生部署方面一直没 ...

  4. MySQL5.7.24 安装

    官网地址 https://dev.mysql.com/downloads/mysql/ 1. 安装依赖 yum install -y cmake make gcc gcc-c++ libaio ncu ...

  5. Why TypeScript?

    本文经作者授权,翻译总结自 TypeScript Team 的成员 orta 的个人博客 <Understanding TypeScript's Popularity>. 原作者: ort ...

  6. webservice学习总结(一)-- WebService相关概念介绍

    一.WebService是什么? 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 一个跨语言.跨平台的规范(抽象) 多个跨平台.跨语言的应用间通信整合的方案(实际) 二.为什么要用 ...

  7. 转:C#读取PDF、TXT内容

    //读取PDF内容 private void button2_Click(object sender, EventArgs e) { label3.Text = OnCreated("D:\ ...

  8. JS019. 原生JS使用new Blob()实现带格式导出Word、Excel(提供无编程基础将页面上表格导出到本地的方法)

    导出效果 代码实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  9. [第八篇]——Docker 容器使用之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. xxx@xxx:~# docker 可以通过命令  docke ...

  10. go build 与go install

    相同点都能生成可执行文件 不同点go build 不能生成包文件, go install 可以生成包文件go build 生成可执行文件在当前目录下, go install 生成可执行文件在bin目录 ...