0%

Typora 和 Hexo 图片插入和部署说明

  1. 问题描述
  2. Typora配置
    1. 设置图像粘贴位置
    2. 设置图片根目录
  3. Hexo设置模板
  4. 如何优雅地部署到GitHub?
  5. 如何更优雅地部署到GitHub上?

问题描述

使用 hexo 构建博客时,把图片文件放在$/source.下,然后在文中使用![](/images/image-name.png)进行访问,执行命令hexo server后,可以在页面中正常浏览图片,$/source.下的图片可以由localhost:4000/****.png直接访问到。

使用 Typora 编辑 Markdown 时,粘贴图片可以选择将图片复制到相对路径的本地文件夹中。

怎么样设置才可以保证粘贴后,本地可以正常浏览图片网页也可以正确显示

Typora配置

设置图像粘贴位置

打开 Typora ,打开格式(O)-图像-全局图像设置,在“插入图片时…”选择复制到指定路径,然后在下面写入../images/${filename}$中的参数是以文件名命名的文件夹),并勾选“优先使用相对路径”。

image-20200518005805958

也可以不通过全局图像设置来设置这个路径,直接在文件的头部写入以下代码块,可以实现同样效果。

image-20200518011551313

之后,每次复制到文本中的图像都会被拷贝到这个文件夹中,并且自动添加相对路径到这个文件夹下:

image-20200518010232133

但很显然,此时的链接并不是我们想要的(我们想要的是![](/images/***/***.png)),前面那个表示返回上一级目录的点点怎么自动去掉呢?

设置图片根目录

打开格式(O)-图像-全局图像设置,选择source文件夹,确定,这时候回到文件中,可以看到在文章头部出现了这么一行字:

image-20200518011202902

然后再次粘贴图片,发现图片的地址为:

image-20200518011245908

这样无论是本地文件浏览还是使用hexo浏览或生成静态文件,都没有问题了。

Hexo设置模板

每次创建文件都设置路径显然是个愚蠢的办法,因此我们应该在 hexo 中设置模板文件,在每次创建文章时都加上关于图像的路径设置。

打开$/scaffold/post.md,在头部写入两行配置代码:

image-20200518012225319

创建新文章:

1
$ hexo new "test article"

image-20200518013046980

粘贴图片:

image-20200518013237528

这边出问题了!!!图片被拷贝到了文件夹 '..\images\**'下面了,仔细观察发现创建文件时,typora-copy-images-to后面的参数被自动加上了引号,这是因为hexo会对头信息中的括号{}进行解析,这边加上引号是进行了一定的变量保护。

那还是靠全局设置就好了,不要这个变量了。

post.md 模板设置

插入图片:

插入效果

成功!

如何优雅地部署到GitHub?

部署到GitHub参考One-Command Deployment,如果自己的ssh-key已经添加到GitHub账户中,直接将ssh链接放在deploy.repo中即可。

image-20200518145358284

但是发布为GitHub Pages时在图片显示方面遇到了一个问题。

比如我们在账户下创建了一个名为blog的仓库专门用来写博客,然后创建GitHub Pages来放置我们的博客页面

那么问题来了,比如我的账户名为 kevin,那么我的 GitHub Pages 的访问地址为 https://whuls.github.io/blog,这与我们设置的图片地址不符(![**.png](/images/images**.png)访问的将会是https://whuls.github.io/images/**.png),我们可以使用特殊插件来完成对相应地址的解析(Assets Folder),不过使用这个方法导致无法在Typora中预览图片,而且可配置性极差。


一个比较好的方法是修改路径,将图片引用路径改成![](/images/blog/images/**.png),然后把source文件夹命名为blog,接着修改模板文件的头信息typora-root-url:../..,在格式(O)-图像-全局图像设置...处修改图像插入时../复制到指定目录的目录为../../blog/images/${filename},最后,配置_config.yml,将source_dir改成blog,将url改成https://whuls.github.io/blogroot改成/blog/

  1. _config.yml

image-20200518174401914

image-20200518144343316

  1. 修改模板文件

image-20200518144459232

  1. 全局图像设置

image-20200518144538156

  1. 文件夹重命名

image-20200518144744465

之后,每次粘贴图片自动填充的地址为:

image-20200518144908502

在typora中可以正确浏览,部署到GitHub Pages上也可以正常显示(无论是在 archive 总目录下或者单独页面下)

在文件目录下查看文章图片

在文件树中查看文章图片

如何更优雅地部署到GitHub上?

通过上一步的部署和配置,折腾了一番,又是改文件夹名称又是配置typora的,搞了半天把网站部署到了whuls.github.io/blog上面去了。

那么问题来了,我觉得那个路径/blog越看越不顺眼,能不能直接用whuls.github.io访问博客?

首先要做的,就是把上一步的花里胡哨的改动改回来:

  1. blog文件夹重新改名为source
  2. 把文章中图片引用的位置由![](/images/blog/images/***)改回![](/images/images***)

  3. 打开typora,把复制图像到路径的目录改回../images/${filename}

  4. 把每个文件头信息中的typora-root-url../..改回..
  5. 修改_config.yml
    • url: https://whuls.github.io
    • root: /
    • source_dir: source

接着我要把这个博客部署到GitHub和Gitee上,预期结果是能够通过whuls.github.iowhuls.gitee.io直接访问我的博客,两个网站的操作略有不同:

  • GitHub:新建仓库,命名为whuls.github.io(不用手动创建github pages),然后把ssh链接拷贝到_config.ymldeploy.repo字段中
  • Gitee:新建仓库,命名为whuls,接着在“服务-Gitee Pages”中启动pages服务,然后把ssh链接拷贝到_config.ymldeploy.repo字段中

_config.yml文件设置多个部署仓库的方式为:

image-20200518201931100

部署时,首先清空已生成的public

1
$hexo clean

然后部署

1
$hexo deploy

也可以用hexo的监视变动功能,生成文件后立刻部署

1
$hexo g -d # 等同于hexo generate --deploy

1
$hexo d -g # 等同于hexo deploy --generate

参考:生成文件|hexo