使用 VuePress 和 Vercel 打造个人技术博客:实现自动化部署
什么是VuePress?
以下是VuePress官方文档的介绍:
VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。
VuePress 诞生的初衷是为了支持 Vue.js 及其子项目的文档需求,但是现在它已经在帮助大量用户构建他们的文档、博客和其他静态网站。
什么时Vercel?
以下是Vercel官方文档的介绍:
Vercel 是一个面向开发人员的平台,可提供更快地构建和部署 Web 应用程序所需的工具、工作流程和基础设施,而无需额外配置。
Vercel 开箱即用地支持流行的前端框架,其可扩展、安全的基础设施分布在全球范围内,可以从用户附近的数据中心提供内容,以实现最佳速度。
在开发过程中,Vercel 提供了用于项目实时协作的工具,例如自动预览和生产环境以及预览部署的评论。
以上就是关于VuePress和Vercel的定义
如何使用VuePress?
格外注意:
我们的vuepress版本是2.0,首先得保证你的node版本在18.16.0以上
搭建一个基础的博客目录
创建一个新目录并进入
mkdir vuepress-starter
cd vuepress-starter
初始化项目
git init
npm init
:::warning
注意:在npm init
这一步你只需要一直按回车就行了
:::
将 VuePress 安装为本地依赖
npm install -D vuepress@next
在 package.json 中添加scripts
{"scripts": {"docs:dev": "vuepress dev docs","docs:build": "vuepress build docs"}
}
添加之后你的package.json长这样儿
{"name": "vuepress-demo","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","docs:dev": "vuepress dev docs","docs:build": "vuepress build docs"},"author": "","license": "ISC","devDependencies": {"vuepress": "^2.0.0-rc.0"}
}
将node_modules、.temp、.cache目录添加到 .gitignore 文件中
echo 'node_modules' >> .gitignore
echo '.temp' >> .gitignore
echo '.cache' >> .gitignore
在你的项目根目录下创建docs
文件夹以及在docs
文件夹下面创建README.md
文件。docs文件夹是你以后主要工作的目录,用来存放md文档、静态资源、配置信息等
运行命令npm run docs:dev
启动开发服务就会启动一个http://localhost:8080/ 的本地服务,然后让我们在README.md中写点东西来看看效果,直接写 Markdown 语法即可,比如我们写上一个
# vuepress-demo
打开浏览器就会看到效果
以上就是对vuepress最基础的上手操作,我们搭建了一个vuepress项目并启动了一个开发服务并为它设置了一个h1的标题
vuepress基础配置
在**docs/.vuepress**
文件夹下创建一个**config.js**
(如果没有.vuepress那就在docs目录下面手动创建一个)config.js主要是用来存放项目的一些配置,所以这个文件显得及其重要。
以下的配置均写在config.js中
主题
我们先使用默认主题,默认主题是内置了的不需要再单独安装,如果需要安装其他的主题具体的操作可以查看官方文档 👉主题
import { defaultTheme } from 'vuepress' // 默认主题export default {theme: defaultTheme({// 默认主题配置navbar: [{text: '掘金', link: 'https://juejin.cn/user/515006730085735'},{text: 'Github', link: 'https://github.com/xiaobai-Coding'},],}),
}
navbar导航栏
navbar属性为一个数组text为标题link为需要导航的链接,例如像下面这样
navbar: [{text: '掘金', link: 'https://juejin.cn/user/515006730085735'},{text: 'Github', link: 'https://github.com/xiaobai-Coding'},],
sidebar侧栏目录
sidebar属性接收一个数组, text标题、collapsible是否可折叠、children子项目,children中可以嵌套继续子项目
sidebar: [{text: '学习',collapsible: true,children: [/* JavaScript */{text: 'JavaScript',collapsible: true,children: []},/* Vue */{text: 'Vue',collapsible: true,children: []},/* CSS */{text: 'CSS',collapsible: true,children: []},{text: '03.md',link: '/study/03.md',}]},
]
标题和语言
title属性为一个字符串作为博客的标题展示
lang博客的语言默认为英文,我们可以将它改为中文zh-CN
import { defaultTheme } from '@vuepress/theme-default'
module.exports = {title: '小白Coding日志',lang: 'zh-CN',description: '这里是小白Coding日志,会以轻松简单的方式,通过分享编程学习日常,帮助大家一步步掌握编程技能!',theme: defaultTheme({navbar: [{text: '掘金', link: 'https://juejin.cn/user/515006730085735'},{text: 'Github', link: 'https://github.com/xiaobai-Coding'},],})
}
描述
description属性为一个字符串作为博客的描述信息
logo
展示在左上角的logo为一张图片,建议图片不要太大最好压缩一下再使用
静态资源
我们将静态资源放在public目录下,在.vuepress目录下面创建一个public文件夹用来存放静态资源,比如我们要使用logo直接这样'/images/logo1.png'
它会被复制到最终生成的网站的根目录下。具体的你可以看官方文档 public
home页配置
home页也就是读者访问你的博客第一眼看到的内容,在这里你可以对自己的博客做一些简要介绍和声明以让读者快速的了解你的博客。还记得我们最开始的时候在docs目录下创建的README.md文件嘛?这个文件就是配置首页内容的地方
注意:语法是这样子的
---
home: true
heroImage: /images/logo2.png
heroAlt: 小白Coding日志
heroText: 小白Coding日志
tagline: 低头做事无问西东,种下一棵树的最佳时间是十年前和现在
actions:- text: 开始阅读link: /study/02.mdtype: primary
footer: 这里是小白Coding日志,会以轻松简单的方式,通过分享编程学习日常,帮助大家一步步掌握编程技能!
---
详细配置您可以看home配置
lastUpdatedText最近更新时间戳 标签的文字、contributorsText贡献者列表 标签的文字
lastUpdatedText: '上次更新',
contributorsText: '贡献者'
经过以上步骤你就可以搭建出一个属于自己的博客了
将代码提交到Github并且与Vercel关联实现自动部署
在Github中新建一个仓库,然后将自己的博客系统代码提交到仓库中,这一步相信大家都会操作我就不重复了吧。在这一步将代码提交到Github的目的就是与Vercel关联,项目在Vercel中部署之后以后更新你的博客内容只需要将代码提交到Github中,然后Vercel就能实现自动部署
- 首先需要使用你自己的Github账号来登录Vercel。
- 点击新建项目来添加Github中的项目,选择对应的项目。
- 点击导入按钮来导入要部署的项目。
- 部署的配置一般使用默认的就行,输出的目录要改一下
docs/.vuepress/dist
- 点击部署按钮开始部署等一会儿就部署好了,只要你在本地运行
vuepress build docs
命令能够打包成功那么部署也基本上没有问题的 - 部署成功之后Vercel会给你分配一个默认的域名,通过这个域名就能访问到自己的博客网站
你以为到这里就大功告成结束了?其实还差最后一步请接着继续往下看
Vercel部署的网站国内无法访问的问题
博客部署成功之后会发现在外网中是可以正常访问的,但国内是无法访问的可是我们部署的个人博客网站主要面向对象还得是国内的小伙伴们啊,这个问题得解决啊!不然这个事情就等于白忙活一场。
遇到这个问题我的想法是能不花钱就不花钱,我用了两个方案去解决这个问题:
- 试着使用 GithubPages 的方式去免费部署自己的网站,折腾了两晚上(因为我都是利用下班后的时间在弄这个事情)发现GithubPages部署后达到的效果并不理想不是我想要的,所以这个方案最终被抛弃。
- 注册一个自己的域名,在Vercel中设置自定义域名去解决这个问题,然后国内就可以正常访问了。我是在阿里云注册了一个域名通过www.xiaobaicoding.com重定向到vercel。
- 在阿里云购买注册域名,完成相关实名认证等操作
- 进入vercel点击已经部署成功的项目进入详情,
- 点击设置后选择域名在输入框中输入你刚刚在阿里云注册的那个域名,
- 点击添加按钮后根据vercel的提示再去到阿里云域名管理控制台对域名进行解析
- 在阿里云输入相关配置保存后耐心等待一段时间就好了,这个可能每个人的情况不同,然后在浏览器地址栏中直接输入自己注册的那个域名就能访问自己的博客网站了
看来还是得花钱啊,花钱能免去很多麻烦
搭建个人博客网站并实现自动化部署是一个重要的里程碑。通过 VuePress 和 Vercel,我们成功创建了一个功能强大且稳定的博客平台,并解决了国内访问的问题。这个过程可能有挑战,但我们的不懈努力让我们取得了成功。
谢谢您的阅读和耐心!希望这篇文章能帮助您搭建自己的个人博客,并且解决在部署过程中可能遇到的问题。祝愿您的博客之旅愉快,不断取得进步与成就!有任何问题欢迎小伙伴们评论区留言。
相关文章:

使用 VuePress 和 Vercel 打造个人技术博客:实现自动化部署
什么是VuePress? 以下是VuePress官方文档的介绍:VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。VuePress 诞生的初…...

Re50:读论文 Large Language Models Struggle to Learn Long-Tail Knowledge
诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Large Language Models Struggle to Learn Long-Tail Knowledge ArXiv网址:https://arxiv.org/abs/2211.08411 官方GitHub项目(代码和实体)…...

Spring IOC - Bean的生命周期之依赖注入
在Spring启动流程中,创建的factoryBean是DefaultListableBeanFactory,其类图如下所示: 可以看到其直接父类是AbstractAutoireCapableBeanFactory,他主要负责完成Bean的自动装配和创建工作。 具体来说,AbstractAutowire…...

Android Termux安装MySQL,内网穿透实现公网远程访问
文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…...

OpenCV快速入门:像素操作和图像变换
文章目录 前言1. 像素操作1.1 像素统计1.2 两个图像之间的操作1.2.1 图像加法操作1.2.3 图像加权混合 1.3 二值化1.4 LUT(查找表)1.4.1 查找表原理1.4.2 代码演示 2 图像变换2.1 旋转操作2.1.1 旋转的基本原理2.1.2 代码实现 2.2 缩放操作2.3 平移操作2.…...

Django 路由配置(二)
一、路由 就是根据用户请求的URL链接来判断对应的出来程序,并返回处理结果,也是就是URL和django的视图建立映射关系. 二、Django请求页面的步骤 1、首先Django确定要使用的根URLconf模块,通过ROOT_URLCONF来设置,在settings.py配置…...

电子学会C/C++编程等级考试2022年06月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:倒序输出 依次输入4个整数a、b、c、d,将他们倒序输出,即依次输出d、c、b、a这4个数。 时间限制:1000 内存限制:65536输入 一行4个整数a、b、c、d,以空格分隔。 0 < a,b,c,d < 108输出 一行4个整数d、c、b、a,整数之…...

【C++】使用std::vector()函数实现矩阵的加、减、点乘、点除等运算
本文通过vector()函数表示矩阵的形式,对 加、减、点乘、点除等运算进行编码和运行,相应结果如下文所述。 #include <iostream> #include <vector>using namespace std;// 矩阵加法 vector<vector<int>> …...

【python】直方图正则化详解和示例
直方图正则化(Histogram Normalization)是一种图像增强技术,目的是改变图像的直方图以改善图像的质量。具体来说,它通过将图像的直方图调整为指定的形状,以增强图像的对比度和亮度。 直方图正则化的基本步骤如下&…...

c语言:矩阵交换
题目: 代码和思路: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int n 0;int m 0;int arr[10][10] { 0 }; // 输入行和列scanf("%d%d", &n, &m);int i 0;int j 0;//读取数组for (i 0; i < n; i)…...

【论文阅读】基于隐蔽带宽的汽车控制网络鲁棒认证(一)
文章目录 Abstract第一章 引言1.1 问题陈述1.2 研究假设1.3 贡献1.4 大纲 第二章 背景和相关工作2.1 CAN安全威胁2.1.1 CAN协议设计2.1.2 CAN网络攻击2.1.3 CAN应用攻击 2.2 可信执行2.2.1 软件认证2.2.2 消息身份认证2.2.3 可信执行环境2.2.4 Sancus2.2.5 VulCAN 2.3 侧信道攻…...

暖阳脚本_ 将Agent技术的灵活性引入RPA,清华等发布自动化智能体ProAgent
RPA暖阳脚本 近日,来自清华大学的研究人员联合面壁智能、中国人民大学、MIT、CMU 等机构共同发布了新一代流程自动化范式 “智能体流程自动化” Agentic Process Automation(APA),结合大模型智能体帮助人类进行工作流构建&#x…...

JUnit 单元自动化
一、Junit 是什么? Junit 是 Java 中用于单元测试的框架。使用 Junit 能让我们快速高效的完成单元测试。 自动化测试:JUnit提供了自动化测试的能力,开发人员可以编写一次测试用例,然后通过简单的命令或集成到持续集成工具中进行…...

Vue3 源码解读系列(十一)——插槽 slot
slot 插槽的实现实际上就是一种 延时渲染,把父组件中编写的插槽内容保存到一个对象上,并且把具体渲染 DOM 的代码用函数的方式封装,然后在子组件渲染的时候,根据插槽名在对象中找到对应的函数,然后执行这些函数做真正的…...

[github初学者教程] 分支管理-以及问题解决
作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于新西兰奥克兰大学攻读IT硕士学位。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。跨领域…...

见面礼——图论
给定一个 n 个点 n 条边的无向图,你需要求有多少种选择图上的一个点 p 和一条边 (x,y) 的方案,使得删去 (x,y) 后图变成一棵树,且这棵树以 p 为根时每个节点的儿子个数均不超过 3。保证至少存在一种这样的方案。 Input 输入的第一行一个整数…...

【论文阅读】SPARK:针对视觉跟踪的空间感知在线增量攻击
SPARK: Spatial-Aware Online Incremental Attack Against Visual Tracking introduction 在本文中,我们确定了视觉跟踪对抗性攻击的一个新任务:在线生成难以察觉的扰动,误导跟踪器沿着不正确的(无目标攻击,UA&#x…...

MR混合现实教学系统在汽车检修与维护课堂教学中的应用
传统的汽车检修与维护课堂教学主要依赖教师口头讲解和黑板演示,这种方式存在一定的局限性。首先,对于一些复杂的机械结构和操作过程,教师难以生动形象地展示给学生。其次,学生无法直接观察到实际操作中的细节和注意事项࿰…...

CentOS7安装xvfb,解决服务器没有X-Server的问题
Linux服务器上一般没有图形界面,但是有时候有些软件又需要图形界面.比如oracle,自动化测试(puppeteer).运行的时候会提示没有没有X服务. 这时候一般不会去特地装图形界面.这个时候就要用xvfb来创建虚拟图形窗口. xvfb介绍 Xvfb(X Virtual Frame Buffer)是基于X Window的虚拟服…...

快速集成Skywalking 9(Windows系统、JavaAgent、Logback)
目录 一、Skywalking简介二、下载Skywalking服务端三、安装Skywalking服务端3.1 解压安装包3.2 启动Skywalking 四、关于Skywalking服务端更多配置五、Java应用集成skywalking-agent.jar5.1 下载SkyWalking Java Agent5.2 集成JavaAgent5.3 Logback集成Skywalking5.4 集成效果 …...

起立科技(起鸿)在第25届高交会上展示透明OLED技术创新
第二十五届中国国际高新技术成果交易会 日期:2023年11月15日 地点:福田会展中心7号馆 深圳,2023年11月15日 — 起鸿科技,作为透明OLED领域的引领者,于今日参展了第二十五届中国国际高新技术成果交易会。这一展会将汇…...

大模型LLM 在线量化;GPTQ\AWQ量化
1、大模型LLM 在线量化 参考:https://www.cnblogs.com/bruceleely/p/17348782.html ##8bit model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).quantize(8).half(...

记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码
基于公司的业务需求,在SpringCloud Gateway组件的基础上,写了一个转发服务,测试开发阶段运行正常,并实现初步使用。但三个月后,PostMan请求接口,返回异常,经排查,从日志中获取到转发…...

复杂数据统计与R语言程序设计实验一
1.下载并安装R语言软件,熟悉基本操作的命令及操作界面,掌握软件的使用方法(提供学号加姓名的截图)。 2.下载并安装Rstudio, (提供运行代码及运行结果的截图)。 3.下载并安装R包DT,…...

UEFI实战——键盘操作
一、键盘操作 UEFI下如何获取键盘键值,用户输入按键方式分两种:一种是单个按键,另外一种是组合按键。两种方式对应两个Protocol服务,接下来分步讲解。 二、单个按键 单个按键使用Protocol服务是EFI_SIMPLE_TEXT_INPUT_PROTOCOL,它定义在MdePkg/Include/Protocol/Simple…...

苹果CMS首涂第30套可装修DIY主题模板免授权版
这是一款可以装修的主题,类似淘宝店装修一样,可以针对首页、栏目页、详情页、播放页进行自定义装修,内置10个模块自由选择、添加、修改、删除、排序操作,后续升级还会增加更多实用和个性模块供选择,主题内包含的导航、…...

C#每天复习一个重要小知识day2:有参与无参构造函数
using System;public class MyClass {private int value;// 有参构造函数public MyClass(int v){this.value v;}// 无参构造函数public MyClass(){this.value 0;}public static void Main(string[] args){// 使用有参构造函数实例化对象MyClass obj1 new MyClass(10);Consol…...

大语言模型的三阶段训练
为了训练专有领域模型,选择LLaMA2-7B作为基座模型,由于LLaMA模型中文词表有限,因此首先进行中文词表的扩展,然后进行三阶段训练(增量预训练,有监督微调,强化学习)。 代码将全部上传…...

面试题c/c++ --STL 算法与数据结构
1.6 STL 模板 模板底层实现:编译器会对函数模板进行两次编译, 在声明的地方对模板代码本身进行编译, 在调用的地方对参数替换后的代码进行编译。 模板传参分析 模板重载 vector 是动态空间, 随着元素的加入, 它的内…...

云原生微服务-理论篇
文章目录 分布式应用的需求分布式架构治理模式演进ESB 是什么?微服务架构 MSA微服务实践细节微服务治理框架sidercar 什么是service mesh?康威定律微服务的扩展性什么是MSA 架构?中台战略和微服务微服务总体架构组件微服务网关服务发现与路由…...