VuePress

12/19/2021 VuePress

This is VuePress

# 博客部署方法

# 初始化构建

# 1.创建并进入一个新目录

mkdir vuepress-starter && cd vuepress-starter
1

# 2.初始化

yarn init # npm init
1

# 3.安装本地依赖

yarn add -D vuepress # npm install -D vuepress
1

# 4.创建第一篇文章

mkdir docs && echo '# Hello VuePress' > docs/README.md
1

# 5.在 package.json 中添加一些 scripts

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

# 6.启动

yarn docs:dev # npm run docs:dev
1

# 模板构建

# 1.使用vuepress-reco主题模板

# 初始化
sudo yarn global add @vuepress-reco/theme-cli
theme-cli init my-blog

# 安装
cd my-blog
sudo yarn install

1
2
3
4
5
6
7
8

# 2.更改依赖

{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  },
  "dependencies": {
    "@vuepress-reco/vuepress-plugin-rss": "^1.0.2",
    "@vuepress/plugin-nprogress": "^1.8.2",
    "npm-check": "^5.9.2",
    "vue-class-component": "^7.2.6",
    "vue-router": "^3.5.2",
    "vuepress": "^1.8.2",
    "vuepress-plugin-code-copy": "^1.0.6",
    "vuepress-plugin-flowchart": "^1.4.3",
    "vuepress-plugin-meting": "^0.3.0",
    "vuepress-plugin-reading-progress": "^1.0.10",
    "vuepress-theme-reco": "^1.6.6"
  }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 3.安装依赖

sudo yarn
1

# 4.目录结构


.
├── .git-ftp-include  // 用于最后指定需要部署的文件或文件夹
├── .gitattributes  // 用于统一文件内编码的换行符
├── .github
│   └── workflows
│       └── nodejs.yml  // Github Actions的配置文件
├── .gitignore  // 忽略上传到Github的文件或目录
├── LICENSE // 许可证文件
├── README.md // Github项目展示文件
├── docs  // VuePress项目根目录
│   ├── .vuepress // 存放配置文件的文件夹
│   │   ├── config.js // 整个工程的配置文件
│   │   ├── dist  // 最后生成的文件目录
│   │   ├── public  // 媒体文件夹(主要是图片)
│   │   └── styles  // 网页样式文件夹(里面空的,没有用)
│   ├── README.md // 网页首页文件
│   └── views // 存放markdown文件的文件夹(可以不要直接把markdown文件放在docs里面)
│       └── frontEnd  // 分类目录(也可以不要分类目录直接放在views里面)
├── package.json  // 指定依赖,项目脚本,Node.js项目描述文件
├── yarn-error.log  // 记录构建失败的日志文件
└── yarn.lock // 变更依赖时自动生成和更新


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 5.添加博客配置

// docs/.vuepress/config.js

module.exports = {
//   host: "0.0.0.0", // 生成网页地址(本地调试使用)
//   port: "22333", // 生成网页端口(本地调试使用)
  title: "Tsanfer's Blog", // 显示在左上角的网页名称以及首页在浏览器标签显示的title名称
  description: "现居住于猎户臂上的一个碳基生命", // meta 中的描述文字,用于SEO
  head: [
    ["link", { rel: "icon", href: "/favicon.svg" }], //浏览器的标签栏的网页图标,基地址/docs/.vuepress/public
    [
      "meta",
      {
        name: "viewport",
        content: "width=device-width,initial-scale=1,user-scalable=no",
      },
    ], //在移动端,搜索框在获得焦点时会放大
  ],
  theme: "reco", //选择主题‘reco’
  themeConfig: {
    type: "blog", //选择类型博客
    fullscreen: true,
    blogConfig: {
      category: {
        location: 2, // 在导航栏菜单中所占的位置,默认2
        text: "分类", // 默认 “分类”
      },
      tag: {
        location: 3, // 在导航栏菜单中所占的位置,默认3
        text: "标签", // 默认 “标签”
      },
      socialLinks: [
        { icon: "reco-github", link: "https://github.com/Tsanfer" },
        { icon: "reco-bilibili", link: "https://space.bilibili.com/12167681" },
        { icon: "reco-qq", link: "tencent://message/?uin=1124851454" },
        { icon: "reco-twitter", link: "https://twitter.com/a1124851454" },
        { icon: "reco-mail", link: "mailto:a1124851454@gmail.com" },
      ],
    },
    nav: [
      //导航栏设置
      { text: "主页", link: "/", icon: "reco-home" },
      {
        text: "工具",
        icon: "reco-api",
        items: [
          {
            text: "个人网盘",
            link: "http://clouddisk.tsanfer.com:8080",
            icon: "fa-hdd",
          },
          {
            text: "订阅转换器",
            link: "http://clouddisk.tsanfer.com:58080",
            icon: "fa-exchange-alt",
          },
          {
            text: "目标检测",
            link: "http://hpc.tsanfer.com:8000",
            icon: "fa-object-ungroup",
          },
        ],
      },
      {
        text: "联系",
        icon: "reco-message",
        items: [
          {
            text: "GitHub",
            link: "https://github.com/Tsanfer",
            icon: "reco-github",
          },
          {
            text: "CSDN",
            link: "https://blog.csdn.net/qq_27961843/",
            icon: "reco-csdn",
          },
          {
            text: "BiliBili",
            link: "https://space.bilibili.com/12167681",
            icon: "reco-bilibili",
          },
          {
            text: "QQ",
            link: "tencent://message/?uin=1124851454",
            icon: "reco-qq",
          },
          {
            text: "Twitter",
            link: "https://twitter.com/a1124851454",
            icon: "reco-twitter",
          },
          {
            text: "Gmail",
            link: "mailto:a1124851454@gmail.com",
            icon: "reco-mail",
          },
        ],
      },
    ],
    sidebar: {
      "/views/frontEnd/": [
        {
          title: "前端", // 必要的
          sidebarDepth: 2, // 可选的, 默认值是 1
          children: [
            "vuepress_theme_reco-Github_Actions",
            "VuePress_GithubPages_TravisCI",
            "Sphinx_GitHub_ReadtheDocs",
          ],
        },
      ],
      "/views/MCU/": [
        {
          title: "MCU", // 必要的
          sidebarDepth: 2, // 可选的, 默认值是 1
          children: [
            "Linux_board_NFS",
            "First_Prepare_for_Lanqiao_Cup_MCU_Competition",
          ],
        },
      ],
      "/views/Computer/": [
        {
          title: "计算机", // 必要的
          sidebarDepth: 2, // 可选的, 默认值是 1
          children: [
            "Storage_hardware",
            "Windows_WSL_terminal_WebDAV_PartitionBackup"
          ],
        },
      ],
      "/views/Tool/": [
        {
          title: "工具", // 必要的
          sidebarDepth: 2, // 可选的, 默认值是 1
          children: [
            "ffmpeg",
            "scrcpy",
            "Frp_Docker_SSH_RDP"
          ],
        },
      ],
    },
    // displayAllHeaders: true, // 默认值:false
    subSidebar: "auto",

    record: "蜀ICP备20005033号-1",
    recordLink: "https://beian.miit.gov.cn/",
    cyberSecurityRecord: "川公网安备 51110202000301号",
    cyberSecurityLink:
      "http://www.beian.gov.cn/",
    startYear: "2020", // 项目开始时间,只填写年份
    lastUpdated: "最后更新时间", // string | boolean
    author: "Tsanfer",
    authorAvatar: "/avatar.svg", //作者头像
    mode: "light", //默认显示白天模式
    codeTheme: "okaidia", // default 'tomorrow'
    smooth: "true", //平滑滚动
    // 评论设置
    valineConfig: {
      appId: process.env.LEANCLOUD_APP_ID,
      appKey: process.env.LEANCLOUD_APP_KEY,
    },
  },
  markdown: {
    lineNumbers: true, //代码显示行号
  }, // 搜索设置
  search: true,
  searchMaxSuggestions: 10, // 插件
  plugins: [
    [
      "meting",
      {
        // metingApi: "https://meting.sigure.xyz/api/music",
        meting: {
          server: "netease",
          type: "playlist",
          mid: "4902520778",
        },
        aplayer: {
          lrcType: 3,
          theme: "#3489fd",
        },
      },
    ],
    [
      "@vuepress-reco/vuepress-plugin-rss", //RSS插件
      {
        site_url: "https://tsanfer.com", //网站地址
        copyright: "Tsanfer", //版权署名
      },
    ],
    ["flowchart"], // 支持流程图
    ["@vuepress/nprogress"], // 加载进度条
    ["reading-progress"], // 阅读进度条
    ["vuepress-plugin-code-copy", true], //一键复制代码插件
  ],
};


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200

# Front Matter

# 预定义变量


# 标题

title
类型: string
默认值: h1_title || siteConfig.title
1
2
3

# 语言

lang
类型: string
默认值: en-US
1
2
3

# 描述

description
类型: string
默认值: siteConfig.description
1
2
3

# 布局组件

layout
类型: string
默认值: Layout
1
2
3
#permalink
类型: string
默认值: siteConfig.permalink
1
2
3

# metaTitle

#metaTitle
类型: string
默认值: `${page.title} | ${siteConfig.title}`
1
2
3

# meta 标签

meta
类型: array
默认值: undefined
1
2
3
---
meta:
  - name: description
    content: hello
  - name: keywords
    content: super duper SEO
---
1
2
3
4
5
6
7

# 默认主题的预定义变量

# 导航栏

navbar
类型: boolean
默认值: undefined
1
2
3

# 侧边栏

sidebar
类型: boolean|'auto'
默认值: undefined
1
2
3

# 上一篇链接

prev
类型: boolean|string
默认值: undefined
1
2
3

# 下一篇链接

next
类型: boolean|string
默认值: undefined
1
2
3

# 内置搜索框

search
类型: boolean
默认值: undefined
1
2
3

# 标签

tags
类型: array
默认值: undefined
参考: 默认主题配置 > 内置
1
2
3
4

# reco主题的预定义变量

# title

description: 文章标题,放弃通过一级目录定义标题的方式,改在 Front Matter 中定义。
1

# date

description: 文章创建日期,格式 2019-08-08 或 2019-08-08 08:08:08。
1
description: 是否开启侧边栏。
1

# categories

description: 所属分类。
1

# tags

description: 所属标签。
1

# keys

description: 文章加密密码。
1

# publish

description: 文章是否发布。
1

# sticky 1.1.2+

description: 文章置顶。
type: number
sort type: 降序,可以按照 1, 2, 3, ... 来降低置顶文章的排列优先级
1
2
3

# Markdown

自定义容器

::: tip
这是一个提示
:::

::: warning
这是一个警告
:::

::: danger
这是一个危险警告
:::

::: details
这是一个详情块,在 IE / Edge 中不生效
:::
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

这是一个提示

这是一个警告

这是一个危险警告

See More

这是一个详情块,在 IE / Edge 中不生效