$cover

前言

這是我在準備成大乙組特選上機考的前三天睡覺睡不著心血來潮架的,其實本來是想要自己寫一個 blog 的但真的沒時間,在架設的過程中有遇到一些問題(甚至我到現在還不知道原因),在爬了網路上各種教學後我決定寫這篇文章來統整一下資訊與心得。

然後由於我是 Windows 用戶,所以這篇文章就只提供 Win 系統的載法,只後如果有空的話會再更新 Linux 或其他系統的(但其實都大同小異就是了)。

先說說我在使用的時候遇到的問題:

  • 程式碼沒辦法正常高亮
  • 不支援 LaTex 表達式
  • 圖片無法支援絕對路徑 source/(尚未釐清原因)

這些問題的解法等等會再一併提到,那我們就開始吧!

前置要求

在安裝 Hexo 之前有一些前置的工具要安裝。

Node.js

主要提供 npm 來安裝其他所需要的套件,可以到 node.js 下載,直接載 LTS 的就行了。

Git

主要用來將檔案部屬到 Github 上,或是將 repo clone 下來,可以到 git 下載。

開始安裝

安裝 Hexo

開啟 CLI 介面,並輸入以下指令來安裝 Hexo

npm install -g hexo-cli
npm install hexo

安裝完後可以打打看 Hexo 指令,例如:hexo -v 來確認是否安裝完成。

初始化 Hexo

先到你要存放 blog 的路徑,例如:D:\Github 然後輸入

hexo init <folder>
cd <folder>
npm install

這裡的 <folder> 就是你要存放 blog 的資料夾。
成功後資料夾裡面應該會出現這些檔案

├── _config.yml
├── package.json
├── scaffolds
├── source
|   ├── _drafts
|   └── _posts
└── themes

設定

_config.yml

用來設定網站的各個細項,像是

# Site
title: Youtong's Blog   # 網站標題
subtitle:               # 子標題
description:            # 描述
keywords:               # 關鍵字
author: Youtong         # 使用者
language: en # or zh-CN # 語言選擇(Claudia 僅支援英語或簡中)
timezone:               # 時區

詳情可以參考官網(文章最下面附有連結)。

source

用來存放網站內容的資料夾,除了 _post 以外任何 _ 開頭的檔案 / 資料夾都會被忽略。

themes

用來儲存各個不同主題的資料夾,等等 Claudia 就是裝在裡面。

安裝 Claudia 依賴套件

在安裝 Claudia 之前要先安裝其依賴套件,要注意是到根目錄(例如 github\blog 而非 github\blog\themes) 底下輸入指令

npm install hexo-renderer-pug 
npm install hexo-renderer-dartsass
npm install hexo-generator-search

# if you need RSS, you must be install this plugin
npm install hexo-generator-feed
# Flowchat
npm install hexo-filter-flowchart        
# Math
npm install hexo-renderer-mathjax

安裝 Claudia

themes 資料夾,然後輸入

git clone https://github.com/Haojen/hexo-theme-Claudia.git
cd hexo-theme-Claudia
npm install

設定 Theme & Github Page 部屬

回到剛剛根目錄的 _config.yml 並修改成以下內容

theme: hexo-theme-Claudia

如果要 deploy 到 Github Page 的話要再改這些東西

deploy:
  type: git
  repo: https://github.com/username/username.github.io.git
  branch: master

Claudia 設定

接著可以到 themes\hexo-theme-Claudia\_config.yml 修改主題的設定,要小心不要跟最外層的 _config.yml 搞混了。

回到一開始的問題

  • 程式碼沒辦法正常高亮
  • 不支援 LaTex 表達式
  • 圖片無法支援絕對路徑 source/(尚未釐清原因)

1. 程式碼沒辦法正常高亮

其實只要修改最外層的 _config.yml 就好

highlight:
  enable: false      
  line_number: false
  auto_detect: false
  tab_replace: ''
  wrap: false
  hljs: true

這邊的重點是 enable 一定要 false,其他設定的話可以自己調。
詳細可以參考官網(文章最下面附有連結)

2. 不支援 LaTex 表達式

想讓 Hexo 支援 LaTex 的話需要安裝其他的套件,首先我們要把 hexo-renderer-marked 刪掉並安裝 hexo-renderer-pandoc hexo-filter-mathjax,在安裝 hexo-renderer-pandoc 之前還要先安裝 pandoc ,可以到 pandoc 選擇對應的規格安裝,我自己是直接用 chocolatey,如果你有的話也可以直接安裝。

choco install pandoc

安裝完 pandoc 後就可以

npm uninstall hexo-renderer-marked
npm install hexo-renderer-pandoc hexo-filter-mathjax

接下來到根目錄的 _config.yml 新增設定

pandoc:
  extra:
    - no-highlight:
  extensions:
    - +abbreviations
    - +autolink_bare_uris
    - +emoji
    - +hard_line_breaks
    - -implicit_figures
    - +mark
    - +short_subsuperscripts

mathjax:
  tags: none # or 'ams' or 'all'
  single_dollars: true # enable single dollar signs as in-line math delimiters
  cjk_width: 0.9 # relative CJK char width
  normal_width: 0.6 # relative normal (monospace) width
  append_css: true # add CSS to pages rendered by MathJax
  every_page: true # if true, every page will be rendered by MathJax regardless the `mathjax` setting in Front-matter
  extension_options:
    {}
    # you can put your extension options here
    # see http://docs.mathjax.org/en/latest/options/input/tex.html#tex-extension-options for more detail

3. 圖片無法支援絕對路徑 source/

一般來講我們要在文章裡插入圖片可以直接

![](path)

接著便會 direct 到 https://example.com/path,但我在使用的時候卻會變成 https://example.com/article/path?翻閱了很多文章後有看到有些人說是根目錄的 _config.ymlpost_asset_folder 沒設定好,但我在更改設定後依然沒能解決問題,於是我就直接使用完整的 url。

![](https://example.com/path)

這樣就解決問題了,雖然還是不知道原因…
但這麼做有個問題就是 localhost 如果是第一次 deploy 或是路徑有變的話會抓不到圖片。

如何部署

講了那麼多終於要講如何部署了

生成靜態檔

npx hexo generate
# or
npx hexo g

清除暫存和靜態檔

npx hexo clean

部屬到本地

npx hexo server
# or
npx hexo s

部屬到 Github

npx hexo deploy
# or
npx hexo d

基本上部屬的時候就是 clean, generate, deploy 三件套,但也不用一直 clean,如果有更改 _config.yml 或是安裝新的套件時再用就好(雖然我自己是以防萬一會 clean 一次)。

心得

自己使用下來覺得蠻不錯的,尤其主題本身很戳我愛好,可以插入圖片的功能也是畫龍點睛,之後應該會把各個心得文、筆記、雜記之類的放到這裡,還有我在 HackMD 跟 Obsidian 上面的筆記也會搬過來。

參考: