搭建Github、Coding博客的技术资料

四、2024年2月更换新mac airbook 安装的记录

新版本的一些改变,需求修改的部分

  1. # - 之前必须有空行(不是很确定)
  2. img 不能有空的 “ ”,需要替换。
  3. - 换行不起作用 需要在前面加Tab;(不是很 确定)。
  4. 文章中yaml部分的Title 和文件名必须一致。
  5. > 符号前面和后面要空行。
  6. 代码块的前后标签都需要单独一行。
  7. 行内公式的用法,之前和独行公式混了,需要重新修改。
  8. ` 必须用\ 转义
  9. 多个-之间不要有空行,否则显示出来就是每个-之间都空一行。

换行的问题

参考: hexo 回车换行无效?

markdown的换行规范:

段落与换行

  1. 段落的前后必须是空行:
    空行指的是行内什么都没有,或者只有空白符(空格或制表符)
    相邻两行文本,如果中间没有空行 会显示在一行中(换行符被转换为空格).
  2. 如果需要在段落内加入换行(<br>):
    可以在前一行的末尾加入至少两个空格.
    然后换行写其它的文字.
  3. Markdown 中的多数区块都需要在两个空行之间。

markdown的规范是软回车,键盘上的回车键是硬回车。一般回车是代表换段。在markdown中,要创建段落,请使用空白行将一行或多行文本进行分隔。

问题:

mac上,之前使用hexo(19年配置的)+next皮肤,回车键就是换行符号了,用起来很丝滑。
最近hexo频繁报错,我就重新装了个最新版本,必须要加,极为难用,而且之前的也要一个一个改正,把 ,十分痛苦。
问问各位大佬,如何改为之前那种使用。

回答:

终于弄好了,尝试更改了marked,marked-i,pand.....等渲染,mathjax数学公式,捣鼓一天,全都不work,有冲突。最后将以前的package.json中的所有依赖重新安装,就和以前一样了。主要是 mathjax 的锅,加了mathjax:true后就没法自动换行了。所以建议大家图省事的话也是找一个没问题的package.json,全部无脑照着安装就行。

个人搞了好久,使用原先的kramed渲染器,回车换行倒是可以了,但数学公式很多地方显示不正常。并且kramed已经停止更新好多年了,所以决定不再用。
markdown-it支持KaTex,但对MathJax的支持不好,所以也没用。
后来还是保留了pandoc的渲染器。即使需要批量修改原先的md文件,特别是段内换行的问题比较突出。

发现在pakage.json中,renderer部分就保留了:

"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-pandoc": "^0.4.0",
"hexo-renderer-stylus": "^3.0.1",

其实就是使用了next的mathjax引擎,然后安装hexo的pandoc渲染器。

pandoc语法的几个常见注意事项:

  • 换行前加两个空格。
  • 图片使用绝对路径。
  • 标题前两个回车。
  • 把本地图片地址变为绝对路径。

使用 pandoc 渲染器 切换 hexo-renderer-pandoc 后,公式倒是能正常显示,但是图片,文本格式需要按 pandoc 的 markdown 格式修改,因此,做了批量调整:

pandoc导致历史md文件格式问题在sublime text中调整方法:

有时,我们可能需要将文件中的换行符替换为其他字符,比如英文逗号、分号等。
Sublime Text 使用正则表达式来替换文本内容非常方便。
举例,一个回车键替换成 空格+空格+回车,以实现段内换行的效果。
你可以通过以下步骤来替换:
1. 打开 Sublime Text 编辑器
2. 打开要替换的文件
3. 按下快捷键「Ctrl + H」(「Cmd + Shift + H」在 Mac 上)
4. 在「Find What」输入框中输入需要替换的字符串:\n
5. 在「Replace With」输入框中输入替换后的字符串:空格+空格+\n
6. 选择「Regular Expression」复选框 (sublime 里面的 .* 那个按钮)
7. 点击「Replace」或「Replace All」按钮进行替换
如果你需要使用正则表达式语法,例如匹配数字、单词等,请参考其它资源了解正则表达式语法。
注意事项,替换的时候因为yaml部分也增加了两个空格,导致出错,需要把yaml那些多出来的空格删除。

软件升级最大的问题,规范变了,导致历史的文章需要根据新的规范做修改。

安装完成后执行 hexo clean. 命令来清空以前生成的 HTML 文件,然后重新 hexo g -d 发布。

关于markdown换行的一篇好文章。 markdown段内换行的说明

渲染器的问题

Hexo 作为一个优秀的 Markdown 博客框架,自然也诞生了很多适用的 Markdown 渲染器,这里对比分析一下 Hexo 下几种常用的 Markdown 渲染器: hexo-renderer-marked , hexo-renderer-kramed , hexo-renderer-pandoc , hexo-renderer-markdown-it , hexo-renderer-markdown-it-plus 。

Next 提供了两个渲染引擎来显示数学方程: MathJax 和 KaTeX。要使用这个特性,您只需要选择一个渲染引擎并打开它的 enable(位于home config file)。 然后你需要安装相应的 Hexo 渲染器来完全支持数学方程式的显示。

ssh key的问题

git config --global user.name “hongyitong”
git config --global user.email “hogyuanjiao@hotmail.com”
ssh-keygen -t rsa -b 4096 -C “hogyuanjiao@hotmail.com”

  1. 查看本地是否存在SSH密钥
    命令:ls -al ~/.ssh
    如果在输出的文件列表中发现id_rsa和id_rsa.pub的存在,证明本地已经存在SSH密钥,请执行第3步

  2. 查看SSH公钥
    命令:cat /Users/电脑用户名/.ssh/id_rsa.pub
    复制打印出来的信息,在GitLab或者GitHub的SSH Keys中进行相应设置即可

  3. 警告的信息
    > You've successfully authenticated, but GitHub does not provide shell access.
    这句话其实一直存在,它只是想告诉你,github 不允许 shell 交互。仅此而已。

mac技巧

Mac用户注意了,要使用管理员权限,首先:“sudo -s”,回车,输入密码,再回车,然后:“npm install -g hexo-cli”,回车,等待下载安装即可!

参考的资料

Mac OS环境下使用Hexo搭建个人博客

三、多机搭建(更换电脑搭建)

其实简单说,就是四个部分:
1、备份
备份source文件夹(所有的MD文件都在这里);备份站点的_config.yml,主题的的_config.yml;
如果担心,可以把整个hexo目录备份下来;
2、安装
按照指引安装(其实可以按照第一次的安装来处理),只是涉及github 仓库那一部分是不需要了;
3、恢复
1)把source目录恢复覆盖;
2)两个_config.yml的内容,比较,然后把需要的部分copy到新装的文件里面替换对应内容。注意,这里不要用整个文件覆盖的模式,因为可能对应的软件的版本不一致了。
4、安装相关的插件
包括支持数学公式、置顶、搜索等等;

因为之前上传到百度网盘的MD源文件,下载之后的创建日期都变成下载那天的时间,导致之前很多没有定义date时间的都默认成下载的日期了。
花了好长时间把MD文件的date属性都加上了发布的时间。

多机部署参考:
多机更新 Hexo 博客
上文中提到的:先在电脑中的某一位置建立好 your_name.github.io 文件夹,比如 D:_name.github.io;
因为之前习惯取了hexo的名字,其实 hexo目录就是这里所谓的 youre_name.githubo.io文件夹。

一、第一次搭建过程资料

经过几天的努力,终于把个人的博客搭建得差不多了。个人的博客现在存在Github和Coding两个地方,地址分别是:
Github版
Coding版     !Coding版本因为有100M的空间限制,无法发布了!

Coding用不了之后,使用了码云Oschina,具体的设置如下(不过Oschina还有有点不稳定和刷新速度比较慢。):
Oschina版
Oschina免费版限制空间了,因为博客容量太大,无法再从github中pull过来了
码云
搭建个人免费博客:利用Hexo在码云上部署博客

在搭建过程当中,参考了以下的文档,特此记录!
如何利用GitHub Pages和Hexo快速搭建个人博客     (这个博客不知道什么原因,访问不了:()
参考一下以下几个吧:
知行合一 用 Hexo 搭建博客
Hexo+nexT主题搭建个人博客
手把手教你使用Hexo + Github Pages搭建个人独立博客

hexo同时托管到coding.net与github
如何将Hexo Blog同时发布到GitHub跟Coding上
|Hexo优化|如何向google提交sitemap(详细)

设置 Google站点管理工具 的验证字符串,用于提交 sitemap

获取 google site verification code
登录 Google Webmaster Tools,导航到验证方法,并选择 HTML Tag。将会获取到一段代码:

1
<meta name="google-site-verification" content="XXXXXXXXXXXXXXXXXXXXXXX" />

将 content 里面的 XXXXXXXXXXXXXXXXXXXXXXX 复制出来。
设置主题。编辑 站点配置,新增字段 google_site_verification。
google_site_verification: XXXXXXXXXXXXXXXXXXXXXXX

在google加了github的收录,但是在增加百度收录的时候,一直生成不了baidusitemap.xml文件。暂时放弃。(后来重启电脑就自动有了:-()
hexo干货系列:(六)hexo提交搜索引擎(百度+谷歌)

本地预览没问题,deploy后主页显示大面积空白

二、优化过程及问题

!!!!!如果本地预览没问题,部署到github有问题的话,先 hexo clean掉在重新 hexo d -g

1、搜索

因为Swiftype收费了,转向了微搜索:
NexT主题下的两种搜索服务的问题

后来简单点,直接使用了Next主题的本地搜索了,具体见下文!
Hexo博客添加站内搜索
补充一点,还需要修改主题下的_config.yml文件,把enable:false改成true

1
2
3
# Local search
local_search:
enable: true

2、数学公式

如何在Hexo中使用MathJax

3、文章发表时间显示了两遍

文章发表时间显示了两遍

4、Hexo文章置顶

Hexo文章置顶

5、如何链接站内文章

A:next或者hexo,链接站内文章的方法?
B:关于引用站内文章的链接,可以使用以下语法:

1
{% post_link markdown-learning-by-maxiang 点击这里查看这篇文章 %}

markdown-learning-by-maxiang是你的文章名称。如果文章不存在,这段代码将会被直接忽略。
点击这里查看这篇文章是该链接的标题。如果置空,则自动提取文章的标题。
ps:这个功能跟主题无关。

6、git远程库与本地联系报错:fatal: Not a git repository (or any of the parent directories): .git

在github上新建了一个仓库,然后相与本地的仓库联系起来
$ Git remote add origin https://github.com/liona329/learngit.git fatal: Not a git repository (or any of the parent directories): .git
总是报这个错
解决方法:git init
成功

7、github build出错信息会发到注册的邮箱

1
2
3
4
5
6
7
8
9
10
11
12
[hongyitong/hongyitong.github.io] Page build failure
G
GitHub <support@github.com>
今天, 16:12

The page build failed for the `master` branch with the following error:

The tag `fancybox` on line 77 in `themes/landscape/README.md` is not a recognized Liquid tag. For more information, see https://help.github.com/articles/page-build-failed-unknown-tag-error/.

For information on troubleshooting Jekyll see:

https://help.github.com/articles/troubleshooting-jekyll-builds

8、Error: Cannot find module 'hexo-util'

升级NexT主题以后,执行hexo clean,出错:

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
✗ hexo clean         
ERROR Script load failed: themes/next/scripts/tags/exturl.js
Error: Cannot find module 'hexo-util'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/lib/hexo/index.js:213:21)
at /Users/lisanlai/lisanlai.github.io/themes/next/scripts/tags/exturl.js:8:12
at /Users/lisanlai/lisanlai.github.io/node_modules/hexo/lib/hexo/index.js:229:12
at tryCatcher (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:502:31)
at Promise._settlePromise (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:559:18)
at Promise._settlePromise0 (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:604:10)
at Promise._settlePromises (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:683:18)
at Promise._fulfill (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:628:18)
at Promise._resolveCallback (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:423:57)
at Promise._settlePromiseFromHandler (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:514:17)
at Promise._settlePromise (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:559:18)
at Promise._settlePromise0 (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:604:10)
at Promise._settlePromises (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:683:18)
at Promise._fulfill (/Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/promise.js:628:18)
at /Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/bluebird/js/release/nodeback.js:42:21
at /Users/lisanlai/lisanlai.github.io/node_modules/hexo/node_modules/hexo-fs/node_modules/graceful-fs/graceful-fs.js:78:16
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
INFO Deleted database.

解决办法:重新安装hexo-util模块

1
npm install -- save-dev hexo-util

9、HEXO-NexT的Local Search转圈圈的问题

可以在浏览器中输入 博客网址:

1
http://localhost:4000/search.xml 

其中 search.xml是搜索的内容文档,在hexo 对应的pubic目录下。

如果有错,浏览器会报出具体的错误。

可以找到引起错误的md文件,然后在search.xml文档中找到对应的段落,可以使用https://www.xmlvalidation.com/ 来验证对应段落的具体错误原因。
具体的文档可以见:https://guahsu.io/2017/12/Hexo-Next-LocalSearch-cant-work/

10、本地预览没问题deploy后主页显示大面积空白

本地预览没问题,deploy后主页显示大面积空白

11、Hexo 博客无法搜索的终极解决方法

http://www.sqlsec.com/2017/12/hexosearch.html

12、文章添加阅读次数,访问量等

Hexo+Next主题 文章添加阅读次数,访问量等:
https://blog.csdn.net/xr469786706/article/details/78166227
hexo博客解决不蒜子统计无法显示问题:
https://www.jianshu.com/p/fd3accaa2ae0

13、解决MacOS升级后出现xcrun: error: invalid active developer path, missing xcrun的问题

今天升级macOS High Sierra,终端里使用git的时候,弹出一行莫名其妙的错误:

1
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 

解决方法,重装xcode command line:

1
xcode-select --install 

如果没有解决问题,执行以下命令

1
sudo xcode-select -switch /