更换电脑时的博客配置

换了一台机器 (Legion Y),之前的surface留着做笔记本,不跑东西了。但是由于开学之后事情比较多,一直没有迁移博客。这两天稍闲下来,把这事情做了。我对CS的东西以前不感兴趣也不了解(比如说不知道nodejs是啥),所以这事情做得很不求甚解、不干净(GitHub报了一堆dependabot alerts),不过我要求也不高,现在在新电脑上能继续写,这就挺好。现在把这个过程记录下来。

我是照着这里做的。首先在GitHub新建一个hexo分支,然后设为default。我们的打算是,用hexo来存放(deploy前的)网页原始文件,用之前的master分支存放生成的静态网页。为了实现这个目的,我们把以hexo为默认分支的repo给clone到本地,把除了.git文件夹之外的部分删光,然后把本地的博客源文件里面.deploy_git以外的部分全复制过来。

注意,如果你之前克隆过theme中的主题文件,那么应该把主题文件中的.git文件夹删掉,因为git不能嵌套上传,最好是显示隐藏文件,检查一下有没有,否则上传的时候会出错,导致你的主题文件无法上传,这样你的配置在别的电脑上就用不了了。

这段我当时给忽略了,结果搞出问题,我不得不用个硬盘把theme文件给拷到新电脑上。

新电脑的话,

  • 安装git
1
2
> sudo apt-get install git
>

>

  • 设置git全局邮箱和用户名
1
2
3
> git config --global user.name "yourgithubname"
> git config --global user.email "yourgithubemail"
>

>

  • 设置ssh key
1
2
3
4
5
6
> ssh-keygen -t rsa -C "youremail"
> #生成后填到github和coding上(有coding平台的话)
> #验证是否成功
> ssh -T git@github.com
> ssh -T git@git.coding.net #(有coding平台的话)
>

>

  • 安装nodejs
1
2
3
> sudo apt-get install nodejs
> sudo apt-get install npm
>

>

  • 安装hexo
1
2
> sudo npm install hexo-cli -g
>

>

但是已经不需要初始化了,

直接在任意文件夹下,

1
2
> git clone git@………………
>

>

然后进入克隆到的文件夹:

1
2
3
4
> cd xxx.github.io
> npm install
> npm install hexo-deployer-git --save
>

>

生成,部署:

1
2
3
> hexo g
> hexo d
>

然后最好定期sync一下repo里面的hexo部分:

Tips:

  1. 不要忘了,每次写完最好都把源文件上传一下
1
2
3
4
> git add .
> git commit –m "xxxx"
> git push
>

>

  1. 如果是在已经编辑过的电脑上,已经有clone文件夹了,那么,每次只要和远端同步一下就行了
1
2
> git pull
>

弄好之后,我又遇到一个问题,就是数学公式显示的问题。我是从这里解决的。数学公式的显示出错主要就是markdown渲染器的问题,得先换掉默认的那个渲染器:

1
2
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save

然后解决语义冲突的事情(例如,将_或*识别为斜体语法)。找到node_modules/kramed/lib/rules/inline.js文件,将inline变量改为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var inline = {
// escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, 第 11 行, 将其修改为
escape: /^\\([`*\[\]()#$+\-.!_>])/,
autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
url: noop,
html: /^<!--[\s\S]*?-->|^<(\w+(?!:\/|[^\w\s@]*@)\b)*?(?:"[^"]*"|'[^']*'|[^'">])*?>([\s\S]*?)?<\/\1>|^<(\w+(?!:\/|[^\w\s@]*@)\b)(?:"[^"]*"|'[^']*'|[^'">])*?>/,
link: /^!?\[(inside)\]\(href\)/,
reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
reffn: /^!?\[\^(inside)\]/,
strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, 第 20 行,将其修改为
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
br: /^ {2,}\n(?!\s*$)/,
del: noop,
text: /^[\s\S]+?(?=[\\<!\[_*`$]| {2,}\n|$)/,
math: /^\$\$\s*([\s\S]*?[^\$])\s*\$\$(?!\$)/,
};

即可(虽然实际上只改了两行)。

然后为了让新设定生效,需要hexo clean一下,然后hexo g -d部署即可。