--- tags: hexo --- # 用Hexo架設個人blog Blog幾乎現代工程師必備的工具,優點: 1. 發布tutorial 2. 提供與其他Developer的交流 3. 記錄自己的學習 將日常學習整理成tutorial,除了避免日後自己忘記,能夠快速熟悉曾經的學習外,還能夠建立留言板與其他Developer交流,互相學習。也能幫助其他人快速上手相同性質的開發,類似Open source的概念,通過其回饋社會。甚至在面試時,能夠作為能力的證明! # 環境建置 我們需要的環境如下: 1. Node.js (用於方便安裝Hexo) 2. git 3. Hexo-git 4. Hexo 5. github帳號 ## Node.js ![](https://i.imgur.com/M9hdv8E.png) 1. <a href='https://tw.alphacamp.co/blog/node-js-and-javascript'>認識Node.js</a> 2. <a href='https://nodejs.org/zh-tw/download/'>安裝Node.js</a> ## git ![](https://i.imgur.com/TiT7c89.png) 1. <a href='https://gitbook.tw/chapters/introduction/what-is-git.html'>認識git</a> 2. <a href='https://kknews.cc/zh-tw/code/n3e8l8g.html'>git與github的關係</a> 3. <a href='https://git-scm.com/downloads'>安裝git</a> (如果原本有開著command line,安裝完git後需要重啟command line,環境變數才會寫入) 通過檢查版本,來驗證是否安裝成功 ``` $ git --version ``` ## Github 登入<a href='https://github.com/'>github</a> 找到右上角選單中Your repositaries (儲存庫) ![](https://i.imgur.com/0CE9wpL.png) 新增一個Repository ![](https://i.imgur.com/W7orlUs.png) 命名為 > 你的帳號名稱 + .github.io > 例: ~~xxxxx~~.github.io ![](https://i.imgur.com/SSlAYOx.png) 看到這個畫面就是創建成功了喔! ![](https://i.imgur.com/DC9e5n8.png) ## Hexo Hexo是一個快速、簡單且高效的Blog框架,我們可以使用node.js快速布置它。 它可以使非web開發人員,須要自己的Blog時,省去很多時間,並專注於內容的編寫。 Hexo產生出來的Blog支援MarkDown語法,並可以建置在github空間上!實在非常方便。 <a href='https://hexo.io/zh-cn/'>中文API</a> ## 安裝Hexo-git ``` $ npm install hexo-deployer-git --save ``` ## 安裝Hexo ``` $ npm install hexo-cli -g ``` 通過檢查版本,來驗證是否安裝成功 ``` $ npm install hexo version ``` # 實作 ## 建構blog的架構 ``` $ hexo init blog #建構blog架構 $ cd blog #進入剛剛hexo建構的資料夾中 $ npm install #通過npm幫我們安裝、紀錄hexo建構的架構中 所需的套件 ``` 建構完成後,blog目錄結構如下: > . ├── _config.yml ├── package.json ├── scaffolds ├── source │ ├── _drafts │ └── _posts └── themes 延伸閱讀:<a href='https://ithelp.ithome.com.tw/articles/10191783'>npm install做了什麼</a> ### _config.yml 網站的<a href='https://hexo.io/zh-cn/docs/setup#config-yml'>設定</a>信息,可以在此設定大部分的參數。 ### package.json 網站的資本資料、套件名稱紀錄。 ``` package.json { "name": "hexo-site", "version": "0.0.0", "private": true, "hexo": { "version": "" }, "dependencies": { "hexo": "^3.8.0", "hexo-generator-archive": "^0.1.5", "hexo-generator-category": "^0.1.3", "hexo-generator-index": "^0.2.1", "hexo-generator-tag": "^0.2.0", "hexo-renderer-ejs": "^0.3.1", "hexo-renderer-stylus": "^0.3.3", "hexo-renderer-marked": "^0.3.2", "hexo-server": "^0.3.3" } } ``` ### scaffolds <a href='https://hexo.io/zh-cn/docs/writing'>模版</a>文件夹。當發布新文章時,Hexo 會根據 scaffold 來建立文件。 ### source 資源文件夾是存放用户資源的地方。除 _posts 文件夹之外,開頭命名為 _ (下滑線)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。 ### themes <a href='https://hexo.io/zh-cn/docs/themes'>主题</a> 文件夹。Hexo 會根据主題來生成静態頁面。 ## 設定blog config 接著,我們需要發布我們的blog到Github repository! ![](https://i.imgur.com/kXLw9ZD.png) 在blog資料夾底下,可以發現一隻檔案名叫<b>config.yml</b>,OS為windows的朋友,可以用記事本開啟它。 ![](https://i.imgur.com/Kd1j4Xg.png) 在第一行,它告訴我們,它是一隻Hexo套件的設定檔,接著拉到檔案的最下方。可以找到: ``` # Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: type: ``` 將設定發布的這部分改為: ``` # Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: type: git repository: 你的github repository網址 branch: master ``` <font color="#dd0000">注意!! 在每個設定項後面,<b>必須空一格</b>,例:type: git</font> 網址可以在這個介面中找到 ![](https://i.imgur.com/npaD3dq.png) 編輯完設定檔後,我們就可以準備發布服務了喔! ## 本地端運行、發布服務 在發布服務之前,我們可以先透過hexo將網站伺服器建立起來,並先檢查有沒有錯誤。 ``` $ hexo server ``` 本地端server運行後,連上本地端,先看看發布後的結果。 > http://localhost:4000 ``` $ hexo d -g ``` 如果正常發布的話,會看到hexo-deployer-git要求登入喔 ![](https://i.imgur.com/P6b9fq0.png)<br> <font color="#dd0000">注意!! 如果在發布過程中遇到這個錯誤,請在執行一次安裝hexo-deployer-git的指令</font> ![](https://i.imgur.com/zNIUWFQ.png) ``` $ npm install hexo-deployer-git --save ``` ## 檢查是否發布成功 在發布完成後,我們可以透過這串網址,造訪我們的blog。如下: > https://~~caseLearner0718~~.github.io/ 其中caseLearner0718代換入自己的github帳號,即可造訪自己的Blog。 ## yml副檔名 yml、yaml附檔名屬於YAML資料格式,YAML是一個可讀性高,用來表達資料序列化的格式。YAML參考了其他多種語言,包括:C語言、Python、Perl,並從XML、電子郵件的資料格式(RFC 2822)並從中獲得靈感。。目前已經有數種程式語言或手稿語言支援(或者說解析)這種語言。 YAML是"YAML Ain't a Markup Language"(YAML不是一種標記語言)。在開發的這種語言時,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種標記語言),但為了強調這種語言以資料做為中心,而不是以標記語言為重點,而用反向縮略語重新命名。 以上資料來自<a href='https://zh.wikipedia.org/wiki/YAML'>YAML-維基百科</a> # 發布文章 ## 創建文章 ``` $ hexo new [postName] ``` 新增完後,在source/_post底下,會看到剛剛新創的檔案,將內容直接新增在裡面就可以了。 推薦MD編輯器:<a href='https://hackmd.io/?nav=overview'>HackMD</a> ## 刪除文章 在source/_post底下,會看到所有發布的文章,將文章直接刪除即可。 ``` $ hexo clean # 清除快取檔案和已產生的靜態檔案。 $ hexo g # g = generate $ hexo d # d = deploy ``` # 參考資料 <a href='https://yaoandy107.github.io/hexo-tutorial/#more'>Hexo+GitHub,新手也可以快速建立部落格</a> <a href='https://hexo.io/zh-cn/'>Hexo 官方文件(含API)</a> <a href='https://blog.csdn.net/jiluben/article/details/40656935'>解决hexo博客的乱码问题</a>