VuePress 的更多配置

news/2024/7/7 21:15:22/文章来源:https://www.cnblogs.com/PeterJXL/p/18280954

08.更多配置

现在,读者应该对 VuePress、主题和插件等有了基本的认识,除了插件,VuePress 自身也有很多有用的配置,这里简单说明下。

VuePress 的介绍

在介绍了 VuePress 的基本使用、主题和插件的概念之后,我们再来看看官网对于 VuePress 的介绍,就很好理解了:

VuePress 由两部分组成:第一部分是一个极简静态网站生成器 ,它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档而优化的默认主题,它的诞生初衷是为了支持 Vue 及其子项目的文档需求。

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

因此,我们可以自己选择一个主题使用,并且使用丰富的插件来完善我们的网站。同时,默认主题自带了很多功能,很多第三方主题都是基于默认主题增强的,我们介绍几个常用的配置。

最后更新时间

有时候我们想要看到文章的更新时间,此时可以配置 themeConfig.lastUpdated ​字段:

// .vuepress/config.js
module.exports = {themeConfig: {lastUpdated: '上次更新', // string | boolean}
}

效果:在文章底部有一个更新时间

补充说明:

  • themeConfig.lastUpdated​​ 默认是关闭的,如果给定一个字符串,它将会作为前缀显示(默认值 Last Updated​​)。
  • themeConfig.lastUpdated​ 的时间是读取每个文件最后一次 git​ 提交的 UNIX 时间戳,所以只能在一个基于 git​ 的项目中启用它。此外,由于使用的时间戳来自 git commit,因此它将仅在给定页的第一次提交之后显示,并且仅在该页面后续提交更改时更新。

可以看到时间显示的格式,是西方的;这是因为 VuePress 默认的 lang 为 en-US,我们修改一下 config.js:

module.exports = {// ...locales: {'/': {lang: 'zh-CN'}},// ...
}  

效果就是根据国内的时间来展示时间了,例如:上次更新: 2023/2/21 22:07:21

如果想自定义时间格式,或做其他修改,可以参考官网文档:默认主题配置-最后更新时间

Git 仓库和编辑链接

当配置了 themeConfig.repo​ 选项,将会自动在每个页面的导航栏生成生成一个 GitHub 链接,以及在页面的底部生成一个 "Edit this page"​ 链接。

module.exports = {themeConfig: {repo: 'vuejs/vuepress',editLinks: true,docsDir: 'docs',// 默认为 "Edit this page"editLinkText: '编辑此页'
}

效果:文章底部有一个编辑此页的链接

点击该链接后跳转:

有了这个链接,如果读者想要修改文章,可以直接点击后修改;

例如,读者看到有什么想要补充的或者修改错别字之类的,就可以点击,然后 fork 项目并 PR。

可以通过 YAML front matter​ 来禁用指定某个页面的编辑链接:

---
editLink: false
---

如果是在默认主题,你可以定义一个全局组件来定义页脚;或者针对某个页面定制页脚。参考:

  • Configuration | Theme
  • 默认主题配置 | VuePress

在 vdoing 主题中,可以直接在配置文件里配置页脚 themeConfig.footer​:例如备案信息,作者信息等。例如这是本博客的备案信息:

themeConfig: {// 页脚footer:{createYear: 2022,copyrightInfo: `<a href='https://beian.miit.gov.cn'>粤ICP备2022067627号-1</a>  <a href='http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=44011302003646'>粤公网安备 44011302003646号</a>`},},

效果:在每个页面的底部都有页脚:

参考:主题配置 | vuepress-theme-vdoing

代码块中的行高亮

在 VuePress 中,针对 Markdown 有扩展,例如行高亮。

有时候,我们想着重标出是哪几行代码是关键,此时可以用代码高亮的形式来。我们可以这样写 Markdown:

‍‍‍‍‍``` js {4}
export default {data () {return {msg: 'Highlighted!'}}
}‍‍‍‍```

输出:

除了单行以外,你也可指定多行,行数区间,或是两者都指定。

  • 行数区间: 例如 {5-8}​, {3-10}​, {10-17}
  • 多个单行: 例如 {4,7,9}
  • 行数区间与多个单行: 例如 {4,7-13,16,23-27,40}

参考:Markdown 拓展 | VuePress

分离配置

随着博客功能的不断完善,config.js 文件会变的很长,笔者因此将配置文件分成了几个部分。有需要的读者可以看情况拆分。

首先,在.vuepress 目录下新建 config 文件夹,然后依次新建 head.ts、plugin.ts 和 themeConfig.ts。此时项目结果如下:

vuepress-learn
├── docs
│   ├── .vuepress
│   │   ├── config
│   │   │   ├── head.ts     
│   │   │   ├── plugin.ts   
│   │   │   └── themeConfig.ts
│   │   └── config.ts
│   ├── 01.Basic
│   │   ├── 01.Basic1.md
│   │   └── 02.Basic2.md
│   ├── 02.Java
│   │   ├── 01.JavaEE.md
│   │   └── 02.JavaSE.md
├── package-lock.json
└── package.json

head.ts 的内容:其实就是将原本配置文件里的 head 部分挪到这里

import { HeadTags } from 'vuepress/config';export default <HeadTags> [['link', { rel: 'icon', href: 'https://s3.bmp.ovh/imgs/2023/02/16/8d42caf2b4ba3334.png' }],]

plugins.ts 的内容:就是将原本配置文件里的 plugins 部分挪到这里

import { UserPlugins } from 'vuepress/config'export default <UserPlugins>[// 复制代码块的插件['vuepress-plugin-code-copy', true],// 阅读进度条的插件'reading-progress',//光标效果的插件['cursor-effects', {size: 2, // size of the particle, default: 2shape: 'star', // ['star' | 'circle'], // shape of the particle, default: 'star'zIndex: 999999999, // z-index property of the canvas, default: 999999999}],//网站动态标题['dynamic-title', {// showIcon: '',showText: '欢迎回来  O(∩_∩)O~~',// hideIcon: '',hideText: '等等,你别走啊 ::>_<::',recoverTime: 2000,}],]

themeConfig.ts 的内容:同理,将 themeConfig 的内容挪到这里

import { VdoingThemeConfig } from "vuepress-theme-vdoing/types";export default <VdoingThemeConfig>{logo: 'https://s3.bmp.ovh/imgs/2022/12/02/bc7428e3916c3a4c.jpg',nav: [{ text: '首页', link: '/' },{ text: '计算机基础', link: '/CouputerBasic' },{text: 'Java', items: [{ text: 'JavaSE', link: '/JavaSE' },{ text: 'JavaEE', link: 'https://www.peterjxl.com/JavaEE' }]},],sidebar: 'structuring',// 编辑此页配置repo: 'Peter-JXL/vuepress-learn',docsDir: 'docs',editLinks: true,editLinkText: '编辑此页',// 页脚footer: {createYear: 2022,copyrightInfo: `<a href='https://beian.miit.gov.cn'>粤ICP备2022067627号-1</a>  <a href='http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=44011302003646'>粤公网安备 44011302003646号</a>`},
}

最后是 config.ts 的内容:引入其他配置文件的配置

import head from "./config/head"
import themeConfig from "./config/themeConfig"
import plugins from "./config/plugins"  
module.exports = {title: '网站标题',theme: 'vdoing',head,themeConfig,plugins
}

最后重启下博客,观察运行是否正常。

本人主攻后端,对于前端的 Node 和 TS 不太熟悉,只会依葫芦画瓢。这里拆分配置文件的方法主要参考:Kele-Bingtang,其他的功能如首页大图、站点信息等也是参考这个博客,非常感谢他。

自定义样式

VuePress 基于 Vue,所以主题色用的是 Vue 的绿色,那如何修改 VuePress 的主题色呢?

你可以创建一个 .vuepress/styles/palette.styl 文件,文件代码如下:

$accentColor = #3178c6

更多的颜色修改参考 VuePress 的 palette.styl。

如果你想自定义修改一些 DOM 元素的样式呢?VuePress 提供了一种添加额外样式的简便方法。你可以创建一个 .vuepress/styles/index.styl 文件。这是一个 Stylus 文件,但你也可以使用正常的 CSS 语法。

我们在 .vupress 文件夹下创建这个目录,然后创建 index.styl 文件。如果想要修改页面上的某个元素,直接用浏览器控制台查看样式即可,然后就可以修改了:例如修改代码块的默认样式。

// 通过检查,查看元素样式声明
.dark .content__default code {background-color: rgba(58,58,92,0.7);color: #fff;
}

所有配置

更多关于配置请参考官网:默认主题配置 | VuePress

本文也参考了其他博主的博客:

  • 本站 - 首页大图模块 | Young Kbt blog
  • 本站 - 站点信息模块 | Young Kbt blog
  • 本站 - 全局时间提示模块 | Young Kbt blog
  • 本站 - 代码块隐藏模块 | Young Kbt blog

使用 Markdown 语法,可以说明代码块是什么编程语言的,这样可以做到代码高亮。具体支持什么语言可以参考:Supported languages

VuePress 使用了 Prism 来为 markdown 中的代码块实现语法高亮。Prism 支持大量的编程语言,你需要做的只是在代码块的开始倒勾中附加一个有效的语言别名. 引自官网:Markdown 拓展-代码块中的语法高亮

如果没有在支持的语言中,则也没什么问题,顶多不会高亮,并且会在编译的过程中有个提示。

Github Calendar

GitHub 或 Gitee 会在每个人的主页里放上一个提交记录图:

有时候将其放到个人博客上面也是不错的选择。其实获取起来很简单:

<img src="https://ghchart.rshah.org/你的用户名"/>

只需在上述地址上,替换为你的 GitHub 用户名即可。

如果是用 hexo,可以参考这篇博客的效果:Gitcalendar | Akilar の糖果屋

获取源码

为了写本系列的博客,博主特地新建了一个项目用于演示,相关代码已放到 Gitee 和 GitHub 上。

并且,不同功能创建了不同分支,想要获取本篇文章演示的源码只需切换分支即可!

例如,你想运行本篇文章所创建的博客,可以这样做:

  1. 打开命令行
  2. 拉取代码:git clone git@gitee.com:peterjxl/vuepress-learn.git ​(也可拉取 GitHub 的)
  3. 跳转目录:cd vuepress-learn
  4. 切换分支:git switch -c VuePressDemo5Settings origin/VuePressDemo5Settings
  5. 安装依赖:npm i
  6. 运行博客:npm run docs:dev

参考

  • vuepress 热更新失效研究_禅思院的博客-CSDN 博客
  • 年轻人的第一篇博客 - SegmentFault 思否
  • java - 「奇怪的教程」年轻人的第一个博客搭建指南 - 个人文章 - SegmentFault 思否
  • vuepress 使用简介及个人博客搭建_穆瑾轩的博客-CSDN 博客_vuepress
  • VuePress 博客优化之 last updated 最后更新时间如何设置
  • 用可爱的插件装饰你的 Vuepress~-阿里云开发者社区

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

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

相关文章

如何解决大文件传输存在的痛点,实现高效流转?

在当代的数字化时代,数据资产在各行各业中扮演着举足轻重的角色,而数据的流通与交换则是其价值得以实现的关键。企业在进行大文件传输时,都面临着诸多挑战,比如网络延迟、大小受限、安全风险等。因此,如何高效安全的进行大文件传输,成为企业需要迫切解决的难题。在选择大…

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS ConnectX-3 网卡定制版 (集成驱动版)

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版 (集成驱动版)VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版 (集成驱动版) VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 …

7.1 ~ 7.7

本部7.1 搬了校区。 发现我们虽然是在西扩上课,但宿舍还是老校区的 \(12\) 人宿舍,输。 不过教学楼好玩的东西还是挺多的。 本来我们是和化奥组一个班,但因为物奥集训 && 我们班人数过多 (\(69\)) 把我们和生奥放在了一起; 然后我们名义上的班主任还是张华,各种老…

发布构件到Maven中央仓库(2024-06更新版 - 解决2024年6月后发布报 status code 401 错误)

之前很久没发布Maven中央仓库了,2024年6月发布突然报 status code 401 错误,一顿查询后发现仓库发布改到中央门户网站了 https://central.sonatype.com/。报错如下:

本地资源(local resource)与项目资源文件(project resource)的区别

导入“本地资源”的图片,会在Form文件下面的Form.resx文件里面,不可以在多个Form界面引用,不可以在里面修改图片的名称; 导入“项目资源文件”的图片,会保存在Properties文件夹下面的Resources.resx文件夹里面,可以在多个form界面引用,可以在里面修改图片的名称。注意:…

Qt/C++编写地图应用/离线地图下载/路径规划/轨迹回放/海量点/坐标转换

一、前言说明 这个地图组件写了很多年了,最初设计的比较粗糙,最开始只是为了满足项目需要,并没有考虑太多拓展性,比如最初都是按照百度地图写死在代码中,经过这几年大量的现场实际应用,以及大量的用户提出的改进意见,逐渐萌生了彻底重新编写对应地图相关的代码,比如基类…

go语言的结构体标签tag 介绍

https://juejin.cn/post/7005465902804123679博客中所涉及到的图片都有版权,请谨慎使用

COOIS/COHV增强

1、文档说明 本文档介绍COOIS/COHV事务码中常用的选择屏幕增强和ALV增强 2、选择屏幕增强 COOIS生产订单抬头选择屏幕添加筛选条件,并将自定义数据添加到报表选择屏幕新增筛选字段函数模块中,将选择屏幕筛选条件抛到内存。此处可以优化,将不属于自定义删选条件去掉,只抛自定…

题解 - 数字计数

忘了声明了,所有题图均来源于 衣服。题目 思路简析 正解是数位 dp,但是我不太会,所以我打分块。 考虑从 \(10^6\) 到 \(2\times10^6\) 和从 \(3\times10^6\) 到 \(4\times10^6\),其中真正的区别只有 观察到数据范围是 \(10^{12}\),分为一些块,每块长 \(10^6\) 会比较均衡…

从零开始带你上手体验Sermant自定义插件开发

本文对Sermant的自定义插件开发的流程进行了体验和探索,包括项目编译、运行、动态配置验证、插件拦截原理等内容,希望对初次体验Sermant高效开发插件的开发者有所帮助。本文分享自华为云社区《Sermant自定义插件开发上手体验》,作者:华为云开源。 一、研究缘由 由于目前我们…

面试:10亿数据如何最快速插入MySQL?

转载:https://mp.weixin.qq.com/s/kL1srP3FZjaTSXLULsUS5g最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里,每条数据多大,是否有序导入,是否不能重复,数据库是否是MySQL? 假设和面试官明确后,有如下约束10亿条数据,每条数据…

2024年好用的5款国产低代码开发平台

最近几年,低代码\无代码\零代码技术和快速开发平台比较热门,全球知名低代码平台厂商有:微软Power Platform、西门子Mendix、OutSystems等。我们国内最近几年也有一些信创国产化低代码平台涌现出来,比如:云程、氚云、轻流、简道云、得帆、ClickPaaS等,华为、阿里、百度等一…

camunda如何实现流程跳转和流程退回

我们在使用工作流的时候,常常有“流程退回”、“流程跳转”、“自由流”、“动态加签”等这样的需求。Camunda流程平台提供了这样的机制和接口,虽然流程模型定义活动执行顺序的序列流,但有时需要灵活地重新启动活动或取消正在运行的活动,进而可以实现中国特色的流程需求。文…

Docker Hub 无法访问,替代镜像

我使用以下配置成功拉取了mysql 8.0.33 和redis lastest,但是不知道究竟是哪一个起作用了linux 执行 sudo vim /etc/docker/daemon.json 填入以下内容:{"registry-mirrors": ["https://docker.m.daocloud.io","https://dockerproxy.com","…

Linux管道符

十五、管道符 管道符和grep命令结合的是最多的 管道符的标准定义: 管道是一种通信机制,常用语进程之间的通信。它表现出来的形式:将前一个的标准输出(stdout)作为后面命令的标准输入(stdin)利用grep和管道符来查看用户信息用户信息存储在 /etc/passwd中 我们自己创建的用户…

C#数据结构与算法入门教程,值得收藏学习!

前言 最近看到DotNetGuide技术社区交流群有不少小伙伴提问:想要系统化的学习数据结构和算法,不知道该怎么入门,有无好的教程推荐的?,今天大姚给大家推荐2个开源、免费的C#数据结构与算法入门教程,值得收藏学习! 数据结构与算法的作用 数据结构与算法在计算机科学中具有不…

多线程下的网格生成及性能分析

前言 概述通过多线程方式实现上千个对象的网格生成,并观察运行效率。多线程通过Thread来进行,每个线程中执行GenerateMeshData方法,在方法中对不同种类的网格进行顶点和三角面序列的计算。首先设置简单立方体,之后改为柏林噪声下生成的复杂地形。主线程限制 Unity设计之初就…

公众号软件链接

链接:https://wwt.lanzouq.com/b0174n6pc密码:gb5dhttps://wwt.lanzouq.com/b0174pdab密码:b357韩科信息咨讯每日科技资讯,致力于新颖、古怪网站分享与实用技巧!谢谢大家支持,您的"在看"、“分享”是我们不断进步之动力! 获取资源扫码关注我们 A world of wonde…

android 安装CA证书

android 安装CA证书 提取证书计算证书的hash值 C:\Users\czl\Downloads>"C:\Program Files\Git\usr\bin\openssl.exe" x509 -inform PEM -subject_hash_old -in charles.pem b682a732 -----BEGIN CERTIFICATE----- MIIFRjCCBC6gAwIBAgIGAY1GZhqIMA0GCSqGSIb3DQEB…

全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解-提高代码可读性的利器

本文对类型注解的定义、使用原因进行了基本介绍,同时对使用typing模块实现类型提示和类型检查进行了基本讲解,通过使用类型注解可以让开发者更清晰地了解函数和变量的预期类型。全网最适合入门的面向对象编程教程:07 类和对象的 Python 实现-类型注解-提高代码可读性的利器 …