个人博客搭建遇坑流程のVuePress2 📕
“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情”
序
最近突然想重新做一下个人博客的网页,自己以前曾经使用过hexo编写过,现在准备使用vuepress了。
vuepress的配置使用跟着官网的快速上手走基本就可以了,一些重要内容的配置主要是编写在config.js文件中的。
vuepress官网:vuepress中文网
我的博客
- 我的项目地址:github.com/kongchengji…
- 我的博客地址:kongchengji.github.io/kongchengji…
不过因为我不太喜欢vuepress提供的默认模板样式,所以我去找了vuepress-theme-reco主题。这是一款简洁而优雅的 vuepress 博客 & 文档 主题。
此主题有0.x、1.x、2.x三个版本,其中2.x主要是alpha测试版。不过我直接不怕死的选择了2.x,虽然看官网上,好像问题贼多。
让我开始体验一下vuepress-theme-reco2.x的使用吧
vuepress-theme-reco2.x使用
虽然不知道为什么,但是官网上并没有favicon.ico的标识,希望到时候我能设置吧💦

- 首先先全局安装:
yarn global add @vuepress-reco/theme-cli@1.0.7
然后创建项目:theme-cli init
这里会出现项目的选项页面,有点像vue cli创建项目时的样子。在最后一项选择时,选择2.x就好。

cd进入项目当中,然后使用yarn安装一下需要的依赖包
当前项目的package.json是如下的:可以对其中一些描述信息进行修改

- 然后在控制台中使用
yarn dev运行项目,可以在http://localhost:8080/ 打开项目网页,查看效果。 此时reco项目的模板样式已经出现,接下来的就是对其进行修改了

- 在项目目录层级中有一个
.vuepress文件夹,此文件夹是用来存放配置和css\js\img等资源的。内部有config.ts配置文件 config.ts可以对名称端口等信息进行配置,在export default defineUserConfig中添加:
export default defineUserConfig({
title: '空城机の博文', // 名称
description: '这是使用vuepress-reco进行的第一次配置', // 描述
dest: './dist', // 打包文件的位置
port: 9074, // 运行端口号
// 添加到html的head顶部的东西
head: [
['link', { rel: 'icon', href: './img/icon.svg' }],
['meta', { name: 'keywords', content: '空城机的个人博客网页' }],
['meta', { name: 'description', content: '空城机的个人博客网页' }],
['meta', { name: 'author', content: '空城机' }],
['meta', { name: 'robots', content: 'all' }],
],
theme: ... // 主题
})
这样一来,顶部的title和icon标签页还有运行时端口号和meta这些信息都会修改了

在theme主题的设置文档:v2.vuepress-reco.recoluan.com/docs/theme/…
模板修改
- 在之前程序运行的时候,控制台中会出现一个警告,index.css是空的

这个.temp文件夹是运行之后的配置文件夹,内部的index.css其实是自定义样式的文件,如果想要去除掉此警告,可以在.vuepress/public/styles下创建一个index.css文件,这样重新运行后,就不会出现警告了。
因为之后在.temp/styles文件夹下的index.css文件夹中就会使用@import引入自定义样式文件

- 对首页markdown文件进行修改
首页的md文件其实就是项目的
README.md文件

此文件中有一个被---括起来的模块,这就是配置的地方
home: true就是在说明这是首页modules:说明页面中有几个模块,分别是顶部的BannerBrand、内容MdContent、底部Footer
至于之后的配置修改,可以参考:v2.vuepress-reco.recoluan.com/docs/theme/…
- 在首页中,可以配置blog模块。在
config.ts文件中可以设置用户名author和用户头像authorAvatar;在README.md文件中,可以设置社交地址socialLinks。


这样的话,只能我自己手动进行添加了(好麻烦)
其实是对于GitHub图标的仿制,在Xions中有一个BrandGithub的图标,那么在node_modules中找到@vicons/tabler文件夹,搜索里面的BrandGithub图标,然后进行仿制。

比如在index.d.ts下的导出示例就可以这样子写:


注意: 这里有一点很重要,我当时写完之后重新运行,发现界面依旧找不到我刚刚添加进去的图标(找了很久原因),浏览器也把缓存给重新清理了,最后发现在项目的
.vuepress文件夹中,存在一个.cache缓存文件夹,将其删除后,重新yarn dev运行项目,这样就能够实现效果了。
至于如果是dark黑暗模式下,在style/index.css中自定义自己想要的颜色,使用fill填充即可

博客添加
不过虽然说的是支持一键迁移hexo, 但实际上用在vuepress也是一样可行的。(不过对于tags和categories格式需要修改一些,使用列表格式)

可以创建一个项目,然后yarn add csdnsynchexo安装
然后在控制台中使用命令运行:npx csdnsynchexo@latest --config ./config.json
这样即可将博客爬取到example文件夹当中

打包
如果觉得自己的博客差不多了,那就使用yarn build命令进行打包吧
TypeError: Invalid value used as weak map key
然后,我就遇到了一个报错:TypeError: Invalid value used as weak map key
上网搜了一下,发现这是由于使用了非标准的html标签,因为vuepress2.x是基于Vue3,校验更加严格,在编译阶段没什么问题,但是打包后就有问题了。比如说<font>,这样我就全局将<font>替换成了<div>
然后继续打包,发现还是报此错误,但是因为添加的markdown太多了,就不想管了。直接在对应的报错js位置,添加try catch。让其不阻断打包,可以将打包顺利的完成。

Must use import to load ES Module: @vuepress\plugin-back-to-top
在项目最初的更新包阶段,我也曾遇到过一个问题,使用yarn下载完node_module包之后,使用yarn dev运行,发现报错Must use import to load ES Module: @vuepress\plugin-back-to-top
这个问题我本来以为是config.ts配置问题,然后找了好久。后来又以为是markdown格式问题,然后反复去校验。
我的package.json中版本如下:
- vuepress: 2.0.0-beta.48,
- vuepress-theme-reco: 2.0.0-beta.33
然后去下载了作者的案例博客: github.com/recoluan/re…
发现里面yarn安装后是正常的,然后在issues中也发现了关于此问题的讨论,虽然没有结果就是了
issues地址: github.com/vuepress-re…
不过根据案例中的yarn.lock和我的yarn.lock做对比,发现@vuepress\plugin-back-to-top会有不同
我对一份成功的和一份报此错误的项目yarn.lock进行了对比,发现@vuepress/plugin-back-to-top@^2.0.0-beta.48的版本不同,猜测可能是因为这个原因


发布
项目打包之后的dist已经出来了,不过查看了一下里面的index.html

里面引入的文件都是绝对路径,所以需要发布出去才能查看。这里我是准备发布到github或者gitee的pages中的。不过现在本地IIS中看看。
本地IIS
打开IIS的方法:win10打开IIS
- 在网站处选择添加网站

2.设置网站添加的信息,IP地址如果未分配,将会默认选择本地

- 启动网站后,在浏览器中打开
http://localhost:8046/,将会打开之前打包的博客项目

Github
鉴于目前Gitee的pages服务需要开启实名认证,所以先使用Github
可以创建一个GitHub的仓库,然后将项目提交到该仓库当中。

不过当前只有项目的代码,想要将网页dist发布出来,还需要新开一个分支gh-pages,取其他名字也可以。
需要先将dist内容单独提到一个文件夹中,可以添加一个README.md说明
-
git init初始化一下git版本库 -
将要提交的远端仓库关联起来
- 关联命令:
git remote add blog-origin 远端仓库地址 - 查看当前的远端仓库:
git remote -v

- 此时可以使用
git status命令查看本地仓库状态,会发现当前没有任何提交

- 此时使用
git add .命令将这些文件添加进入项目的管理队列当中

- 使用
git commit命令将这些加入进来的文件做一次提交 会出现跳转到vim编辑器中,可以添加提交说明 使用shift + ;键,可以输入内容set nu,进入编辑,然后输入提交说明

添加完说明后,使用Esc退出插入,然后继续使用shift + ;。
输入wq,退出vim编辑器。
这样再次输入git status查看状态,就会发现当前已经没有需要提交的内容了

- 因为我要提交的是新分支,而不是默认的
master分支,所以需要在本地先创建新分支
- 命令:
git checkout -b gh-pages - 查看目前分支:
git branch


- 使用命令进行推送,格式是
git push --set-upstream 远端 分支名:分支名
- 命令:
git push --set-upstream blog-origin gh-pages:gh-pages

重新回到github仓库中,发现已经出现新的分支了

注意:推送的过程中可能产生一些失败,我就遇到了
Logon failed, use ctrl+c to cancel basic credential prompt.。这其实需要github添加一个token。具体可参考:blog.csdn.net/lm_is_dc/ar…
- 可以去
Settings中,选择Pages,然后根据自己的分支,将其保存使用,会自动生成一个网址,可以通过其进行访问了

目前博客项目就已经挂载到网站上面了,可以通过地址进行访问了
注意: 这里可能会遇到一个引入文件路径出错的问题,可以在项目的
config.ts文件当中进行解决,通过配置base名为GitHub的仓库名称
转载自:https://juejin.cn/post/7140934570370662407
