本文最初發佈於個人我的博客Bambrow's Blog,採用 BY-NC-SA 許可協議,轉載請註明出處。如有後續更新,將更新於原博客。歡迎去個人博客閱讀更多文章! html
本文詳細記錄一下站點創建過程,以便查閱。對於具體的細節則不會作過多解釋,主要展現步驟。這一篇主要講述更換NexT
主題以及後續維護的相關內容。git
本文運行環境:github
npm: 6.14.7 hexo: 4.2.1 hexo-cli: 3.1.0 NexT: 8.0.0-rc.4
咱們這裏選擇的是NexT
主題。Hexo
支持許多主題,你也能夠選擇本身喜歡的主題。npm
NexT
NexT
是很是流行的Hexo
主題。根據這個網站,該項目幾經易手,經歷過不少不一樣的版本。咱們如今固然是採用目前的最新版本。bash
首先咱們運行hexo -v
與npm -v
查看一下Hexo
與Node.js
的版本,確保它們大於這個連接裏所示的版本最低要求。網絡
如下步驟主要參考了NexT
官方文檔。仍是在博客的根目錄裏,運行以下命令:hexo
git clone https://github.com/next-theme/hexo-theme-next themes/next
等待運行完畢,新主題就下載好了。這裏須要區分的是,咱們如今有了兩個名爲_config.yml
的文件。一個是根目錄下的_config.yml
,這表明着站點的配置文件;還有一個是themes/next/_config.yml
,這表明着這個主題的配置文件。要注意區分它們。app
下一步,咱們打開站點配置文件_config.yml
,找到theme
那一行並改成theme: next
,主題就更換完畢了。你能夠運行hexo clean; hexo g; hexo s
來查看效果。ide
git submodule
若是此時你嘗試使用git add .
,你會發現會有以下的warning:post
warning: adding embedded git repository: themes/next hint: You've added another git repository inside your current repository. hint: Clones of the outer repository will not contain the contents of hint: the embedded repository and will not know how to obtain it. hint: If you meant to add a submodule, use: hint: hint: git submodule add <url> themes/next hint: hint: If you added this path by mistake, you can remove it from the hint: index with: hint: hint: git rm --cached themes/next hint: hint: See "git help submodule" for more information.
這是由於themes/next
文件夾來源於另外的git
項目,所以沒法上傳。在這裏有許多解決辦法,其中一個辦法是刪除themes/next
裏的.git
文件夾。這並非一個好辦法,由於這樣的話就沒法再經過git pull
更新themes/next
模塊。所以,比較好的辦法是設置git submodule
。
注意,使用本文的辦法後,將再也不推薦修改themes/next/_config.yml
文件。由於修改該文件可能在更新主題時會形成本地修改與遠程更新的衝突。固然,這也能夠經過git stash
、git pull
、git stash pop
而後修復conflicts來解決,但總歸是比較麻煩。若是你須要深度定製該主題,建議fork一份改主題源代碼到本身的GitHub上,而後將本身fork後的倉庫做爲submodule
。具體的作法能夠參考網上的其餘教程。這裏假設你不會再修改themes/next/_config.yml
文件(放心,還有其餘方法能夠更改主題設置)。
在添加submodule
以前先作一點準備工做:
git rm -r --cached themes/next
而後運行:
git submodule add https://github.com/next-theme/hexo-theme-next themes/next
這會在你的根目錄下添加.gitmodules
文件,內容以下:
[submodule "themes/next"] path = themes/next url = https://github.com/next-theme/hexo-theme-next
在這以後,若是你想更新NexT
主題的代碼,可使用git submodule update --remote
命令。你也能夠進入themes/next
文件夾使用git pull
。
讓咱們提交這一次修改:
git add . git commit -m "change theme" git push origin master
前文推薦不要修改themes/next/_config.yml
文件。咱們想要自定義一些配置,該怎麼作呢?官方教程給出了答案。
在這裏,有兩種修改方式,一種是Hexo-Way,也就是把全部設置都放在根目錄的_config.yml
裏。還有一種是NexT-Way,也就是把主題設置放在source/_data/next.yml
裏。這裏咱們選擇後者。
咱們新建文件夾並複製文件:
mkdir -p source/_data cp themes/next/_config.yml source/_data/next.yml
隨後,你就能夠修改source/_data/next.yml
裏的內容了。這裏講幾個主要的配置。
主題樣式在# Schemes
下面。一共有四種樣式,分別是Muse,Mist,Pisces和Gemini。其中前兩種是單欄樣式,後兩種是雙欄樣式,若是要更改,只需註釋掉當前樣式,再取消註釋想要更改的樣式便可。
在下方的Dark Mode選項裏,你能夠選擇爲網頁開啓暗色模式,只須要把false
變成true
便可。
在# Menu Settings
下面你能夠選擇開啓菜單項目。它們都是默認關閉(被註釋掉)的。須要哪一項,取消註釋便可。
注意,除了home
與archives
,其餘的頁面須要手動添加。好比,你想要開啓about
頁面,那麼就要在Hexo
根目錄下運行:
hexo new page "about"
隨後在source
文件夾下面就會生成about
目錄,裏面有index.md
文件。你能夠更改文件內的標題,隨後在date
行下面加一句:
+ type: "about"
若是須要還能夠加上comments: false
來爲這個頁面關閉評論(後文會講到如何添加評論功能)。
就大功告成了。你能夠隨意編輯這個頁面。你也能夠自定義菜單項目,甚至能夠嵌套項目,具體作法能夠查看官方教程。
這裏舉個簡單的例子,假如咱們要新建一個菜單項目叫作notes
,首先在# Menu Settings
的menu
下面新建一行:
menu: home: / || fa fa-home about: /about/ || fa fa-user tags: /tags/ || fa fa-tags categories: /categories/ || fa fa-th archives: /archives/ || fa fa-archive #schedule: /schedule/ || fa fa-calendar #sitemap: /sitemap.xml || fa fa-sitemap #commonweal: /404/ || fa fa-heartbeat + notes: /notes/ || fa fa-sticky-note
圖標的代碼能夠去Font Awesome網頁上查找。隨後如前面的例子,手動添加頁面便可。如要添加自定義菜單的中文翻譯,須要新建source/_data/languages.yml
文件,而後寫入以下內容:
zh-CN: menu: notes: 筆記
任何翻譯均可以在這個文件裏設置或覆蓋。
此外,在# Sidebar Settings
下面能夠找到關於側邊欄的一些設置。除了它自己的一些參數,你還能夠設置其中的一些內容,好比social
下面能夠開啓你的社交網絡帳號與主頁。另外,搜索back2top
還可讓你把回到首頁的按鈕放在側邊欄,並開啓閱讀進度百分比功能。
網站圖標能夠在# Site Information Settings
的favicon
下面找到。默認讀取的圖標位於themes/next/source/images/
下面。咱們固然不該該修改themes/next
裏面的內容,所以若是要更換,能夠把圖標放在source/images/
目錄裏(若是沒有這個目錄就本身新建)。教程還推薦了這個網站來生成你本身的圖標。
頭像則在側邊欄設置的# Sidebar Avatar
下面。你能夠把頭像放在source/uploads/
目錄裏(若是沒有這個目錄就本身新建)。
Creative Commons設置能夠搜索creative_commons
。它支持多種協議,默認是by-nc-sa
。更多協議能夠參考維基百科的解釋。
你能夠在這裏查看並選擇你喜歡的樣式,隨後搜索codeblock
修改。你還能夠打開復制按鈕,方便讀者複製代碼塊裏的內容。
搜索reading_progress
便可開啓閱讀進度功能。還能夠在bookmark
開啓書籤功能,讀者能夠選擇點擊書籤圖標來保存閱讀進度,下次進入這篇文章時就能夠繼續閱讀。
下面的github_banner
可讓你開啓GitHub橫幅,它會在網頁右上角顯示一個小橫幅,直通你的GitHub主頁。
在# Font Settings
能夠更改字體設置,NexT
容許你更改全局字體、網站標題字體、h1-h6
標題字體,文章字體與代碼字體。若是你的定製程度比較高,仍是參看官方教程比較好。
這個功能已經內置在NexT主題中。在source/_data/next.yml
中搜索並開啓pangu
便可。
一樣,官方教程仍是比較詳細的,解釋了不少第三方插件的用法,囊括了數學公式、評論系統、網站統計與分析、評分與分享小部件、搜索功能、即時聊天室等等。這裏只講一下我我的開啓的服務。
這部分參考了這篇文章。
註冊LeanCloud時,建議註冊國際版,國內版要驗證的東西比較多。而後新建一個應用,名字能夠任意寫。隨後打開應用,點擊存儲條目下的結構化數據,而後點擊建立Class,名稱爲Counter,其餘保持默認。隨後去設置裏的應用Keys
記下AppID
與AppKey
。
打開source/_data/next.yml
,搜索leancloud_visitors
,將其打開,填寫剛纔的AppID
與AppKey
,security
也設置爲打開。隨後的步驟比較多且複雜,請參考上面的文章,可是介於如今LeanCloud又有更新,因此作一點補充說明。
首先,上面的參考文章裏,須要打開NexT主題配置文件的時候,咱們統一打開source/_data/next.yml
。要時刻記住NexT主題的目錄不要修改。
其次,在博客配置文件_config.yml
裏,在theme:next
後面(你也能夠添加到別的位置)添加的內容是:
leancloud_counter_security: enable_sync: true app_id: 你的AppID app_key: 你的AppKey username: 你用"hexo lc-counter register"註冊的用戶名 password: 你用"hexo lc-counter register"註冊的密碼
記得在這以前要安裝:
npm install hexo-leancloud-counter-security
而後,在配置deploy
的時候,由於咱們多加了一項,因此應該改成:
deploy: - type: git repo: 你的GitHub目錄地址 branch: master - type: leancloud_counter_security_sync
也就是每個type
前面都要加上-
。
隨後,在設置Counter的權限時,咱們在add_field
與create
均選擇指定用戶,隨後在用戶名裏輸入你用hexo lc-counter register
註冊的用戶名,它會自動找到對應的用戶。在設置完後,兩項都應該顯示0 Role, 1 User
。對於delete
,選擇指定用戶留空便可,會顯示顯示0 Role, 0 User
。
在前一步的基礎上,在source/_data/next.yml
找到# Valine
,將其打開,而且填寫appId
與appKey
。在這裏,咱們把visitor
設置爲true
,隨後把上一步的leancloud_visitors
下的enable
設置爲false
,由於二者之間有衝突。
這個功能能夠顯示網站的瀏覽量和訪客數。在source/_data/next.yml
裏找到busuanzi_count
,將其打開,由於咱們已經開啓了LeanCloud的計數功能,因此將post_views
關掉(不然文章內部的閱讀次數會有異常),其餘保持打開便可。
若是在本地測試,你會發現統計數據很是大,這是由於不蒜子經過域名統計,因此localhost:4000
的數字會比較大,沒必要擔憂。
首先在根目錄安裝:
npm install hexo-generator-searchdb
隨後,在博客配置文件_config.yml
里加入:
search: path: search.xml field: post format: html limit: 10000
而後在source/_data/next.yml
裏打開local_search
。
首先在根目錄安裝:
npm install hexo-word-counter
隨後,在博客配置文件_config.yml
里加入:
symbols_count_time: symbols: true time: true total_symbols: true total_time: true exclude_codeblock: false awl: 4 wpm: 275 suffix: "mins."
須要注意的是,若是插件須要安裝新的包,而你像我同樣設置了自動部署,那麼你可能須要更新一下你的工做流,在安裝Hexo
那一步加一些步驟,安裝這些依賴。修改.github/workflows/main.yml
的內容,將新的依賴安裝寫在npm install
那一行後面便可。