博客之旅:從 Jekyll 到 Hexo

image

初出茅廬之時(shí)枚尼,看到他人的博客,總會(huì)產(chǎn)生一絲新鮮感更胖,好奇之心讓你不知不覺跟隨著他人的腳步铛铁,在寫作平臺(tái)開始展露拳腳。

發(fā)布了兩三篇文章后却妨,又發(fā)現(xiàn)有些人并非在寫作平臺(tái)寫作饵逐,而是在擁有自己域名的博客平臺(tái)發(fā)布。就像小時(shí)候看到鄰居小孩吃糖彪标,不知甜不甜就想著自己也能吃一塊倍权。然后就開始折騰了,購買域名空間捞烟,獨(dú)立搭建博客薄声。

從寫文章到搭建博客這思路是對(duì)的,但不乏帶有點(diǎn)跟風(fēng)之意坷襟。博客奸柬,技術(shù)圈的個(gè)人名片。特別是在招聘面試時(shí)婴程,部分面試官會(huì)特別關(guān)注面試者是否有個(gè)人博客廓奕,一來從博客上能看出面試者的表達(dá)能力和涉獵做葵,二來能看到個(gè)人的代碼水平和編碼習(xí)慣弧满。

此外,博客的書寫對(duì)個(gè)人也是一種技能鍛煉。資料的整理头滔,特別是技術(shù)問題的整理,有助于自己下一次遇到類似的問題時(shí)能否更好的回憶細(xì)節(jié)和復(fù)用相關(guān)代碼己沛。

但如何能又快又好的搭建臂拓,這是講究方法的。

筆者在開發(fā)博客前押逼,簡(jiǎn)單做了調(diào)研步藕,了解到當(dāng)下最受歡迎的搭建模式就是借助GitHub Page和靜態(tài)博客框架。接下來向大家介紹整個(gè)博客的搭建流程挑格。

Github Pages 入門

  1. 首先咙冗,注冊(cè)Github帳號(hào)
    注冊(cè)Github帳號(hào)
  2. 然后漂彤,將代碼托管在 Github 上雾消。
    新建一個(gè) repository。如果你希望你的站點(diǎn)能通過 <你的 GitHub 用戶名>.github.io 域名訪問挫望,你的 repository 應(yīng)該直接命名為 <你的 GitHub 用戶名>.github.io立润。例如,qwebfe.github.io媳板。
  3. 最后配置 Github Pages桑腮,具體細(xì)節(jié)詳見 Getting Started with GitHub Pages

靜態(tài)博客框架

根據(jù)筆者調(diào)研拷肌,網(wǎng)上討論最多的博客框架當(dāng)屬 Jekyll 和 Hexo到旦。有人說,Jekyll 就是為了寫博客打造的巨缘。Github Pages 中提供的 Jekyll 主題似乎也驗(yàn)證了這點(diǎn)添忘。早期組內(nèi)的博客也是基于 Jekyll 搭建的,其原因我想大概是 GitHub 自帶 Jekyll 引擎若锁,無需部署靜態(tài)頁面搁骑,只放項(xiàng)目源碼即可。后因開發(fā)環(huán)境依賴問題不便維護(hù)又固,便棄 Jekyll 從 Hexo仲器。據(jù)說 Hexo 的出現(xiàn)是因?yàn)?Jekyll 比較慢,大概是早期 Hexo 還不夠成熟仰冠,還不支持自動(dòng)化部署乏冀,也給使用者帶來了不便,但那個(gè)時(shí)候已經(jīng)過去了洋只。接下來向大家具體介紹 Jekyll 和 Hexo辆沦。

Jekyll

gem install bundler jekyll

jekyll new my-awesome-site

cd my-awesome-site

bundle exec jekyll serve

# => Now browse to http://localhost:4000

通過以上幾個(gè)命令可以看出昼捍,Jekyll 是基于 Ruby 實(shí)現(xiàn)的,安裝 Jekyll 需要搭建 Ruby 環(huán)境肢扯,但在 Windows 搭建 Ruby 環(huán)境并不被推薦妒茬。若你是 Windows 用戶,那可能一開始就跌倒在安裝 Jekyll 的起跑線上蔚晨。

我們組的早期博客基于 Jekyll乍钻,運(yùn)行了小一年時(shí)間,但用戶體驗(yàn)不是很好铭腕。受環(huán)境搭建影響银择,多數(shù)成員無法啟動(dòng)本地服務(wù)器,都是盲寫文章谨履,推送上線后欢摄,發(fā)現(xiàn)問題再修復(fù)。有一次把文章日期提前了一天笋粟,上線后新文章一直未被構(gòu)建。無法本地預(yù)覽析蝴,一定程度上影響排查效率害捕。后面求助了同事,也沒找到原因闷畸,但在第二天早上被告知文章構(gòu)建成功了尝盼。筆者一時(shí)蒙蔽,后查閱了各手資源佑菩,才得知以下這個(gè)答案:

Jekyll 是不會(huì)構(gòu)建未來日期的文章的盾沫!

在主題方面,有想法的你可自行選擇Jekyll主題殿漠。按照安裝提示赴精,或基于gem,或只取遠(yuǎn)程主題绞幌,或直接直接拷貝至項(xiàng)目中蕾哟,然后配置 _config.yml 文件即可。

theme: minimal-mistakes-jekyll

厭倦了 Jekyll 的那段愛恨情仇莲蜘,最終投向了 Hexo 的懷抱谭确。


Hexo

A fast, simple & powerful blog framework
快速、簡(jiǎn)潔且高效的博客框架

Hexo 是基于 NodeJs 實(shí)現(xiàn)票渠,在 Windows 上安裝 NodeJs 開發(fā)環(huán)境可謂是相當(dāng)簡(jiǎn)單逐哈。何其美哉!樂哉问顷!

Hexo 默認(rèn)的主題是 landscape昂秃,接觸過博客園的童鞋可能覺得該主題有它的味道薯鼠。蘿卜青菜各有所愛,你可自行選擇主題械蹋。關(guān)于 Hexo 的主題出皇,筆者想說是我喜歡的調(diào)調(diào)??,本組博客應(yīng)用的主題是NexT

建站

啥也不說了哗戈,搬磚吧郊艘。

安裝

npm install -g hexo-cli

初始化

hexo init <folder>

cd <folder>

npm install

npm server

M:咦? 這一套指令好像在哪見過??。
H:?? vue ?
M:嗷嗚...

項(xiàng)目初始化完成后唯咬,指定文件夾的目錄如下:

.
├── _config.yml # 網(wǎng)站的 配置 信息
├── package.json
├── scaffolds
├── source
|   ├── _drafts
|   └── _posts
└── themes

  • scaffolds: 模版文件夾, 當(dāng)你新建文章時(shí)纱注,Hexo 會(huì)根據(jù) scaffold 來建立文件
  • source: 資源文件夾,存放用戶資源的地方胆胰。除 _posts 文件夾之外狞贱,開頭命名為 _ (下劃線)的文件 / 文件夾和隱藏的文件將會(huì)被忽略。Markdown 和 HTML 文件會(huì)被解析并放到 public 文件夾蜀涨,而其他文件會(huì)被拷貝過去瞎嬉。
  • themes: 主題文件夾,把你想要的主題拷貝至當(dāng)前目錄即可厚柳。
  • _config.yml: 網(wǎng)站的配置信息氧枣,Hexo 這個(gè)點(diǎn)很友好,它給相關(guān)配置都做了注釋和文檔說明别垮。
    • theme: 你選用的主題便监,默認(rèn)為 landscape

寫作

項(xiàng)目創(chuàng)建完成后,我們就可以開始寫作了碳想。關(guān)于寫作烧董,Hexo cli 也提供了相關(guān)指令,可快速創(chuàng)建一篇新文章或者新的頁面胧奔。

hexo new [layout] <title>
  • layout逊移,Hexo 有三種默認(rèn)布局:post、page 和 draft葡盗∶螅基于不同類型創(chuàng)建的文件會(huì)存儲(chǔ)在各自對(duì)應(yīng)的路徑中,你可以編輯 scaffolds/* 下的模板文件觅够,保證新頁面的規(guī)范性胶背。
  • title,Hexo 默認(rèn)以標(biāo)題做為文件名稱喘先,但你可編輯 new_post_name 參數(shù)來改變默認(rèn)的文件名稱钳吟,舉例來說,設(shè)為 :year-:month-:day-:title.md 可讓你更方便的通過日期來管理文章窘拯。
new_post_name: :year-:month-:day-:title.md

執(zhí)行指令時(shí)只需輸入文件名红且,創(chuàng)建成功會(huì)自動(dòng)帶上當(dāng)天日期坝茎,文件內(nèi)容也會(huì)按照模板格式顯示。

hexo new test # ==> source/_posts/2020-12-01-test.md

若你想了解更多使用方法暇番,可前往hexo官網(wǎng)嗤放。

部署

Hexo 官方介紹了三種部署方式。由于我們代碼托管在了 Github 上壁酬,那筆者就部署到 GitHub Pages 展開介紹次酌。

1、將你本地的 Hexo 站點(diǎn)文件夾推送到 repository(<你的 GitHub 用戶名>.github.io) 中舆乔。默認(rèn)情況下 public 目錄將不會(huì)被推送到 repository 中岳服,你應(yīng)該檢查 .gitignore 文件中是否包含 public 一行,如果沒有請(qǐng)加上希俩。
2吊宋、將 Travis CI 添加到你的 GitHub 賬戶中。

選擇一個(gè)賬號(hào)

授予此應(yīng)用訪問權(quán)限

授予項(xiàng)目訪問權(quán)限

3颜武、前往 GitHub 的 Applications settings璃搜,配置 Travis CI 權(quán)限,使其能夠訪問你的 repository盒刚。若你在第2步忘記了設(shè)置 Travis CI 的倉庫權(quán)限腺劣,也可在此重新配置。

配置 Travis CI 權(quán)限
設(shè)置 Travis CI 的倉庫權(quán)限

4因块、保存設(shè)置后你應(yīng)該會(huì)被重定向到 Travis CI 的頁面。如果沒有籍铁,請(qǐng) 手動(dòng)前往涡上。
5、在瀏覽器新建一個(gè)標(biāo)簽頁拒名,前往 GitHub 新建 Personal Access Token吩愧,只勾選 repo 的權(quán)限并生成一個(gè)新的 Token。Token 生成后請(qǐng)復(fù)制并保存好增显。

新建 Personal Access Token

6雁佳、回到 Travis CI,前往你的 repository 的設(shè)置頁面同云,在 Environment Variables 下新建一個(gè)環(huán)境變量糖权,NameGH_TOKENValue 為剛才你在 GitHub 生成的 Token炸站。確保 DISPLAY VALUE IN BUILD LOG 保持 不被勾選 避免你的 Token 泄漏星澳。點(diǎn)擊 Add 保存。
image

7旱易、在你的 Hexo 站點(diǎn)文件夾中新建一個(gè) .travis.yml 文件:

sudo: false
language: node_js
node_js:
  - 10 # use nodejs v10 LTS
cache: npm
branches:
  only:
    - master # build master branch only
script:
  - hexo generate # generate static files
deploy:
  provider: pages
  skip-cleanup: true
  github-token: $GH_TOKEN
  keep-history: true
  on:
    branch: master
  local-dir: public

8禁偎、將 .travis.yml 推送到 repository 中腿堤。Travis CI 應(yīng)該會(huì)自動(dòng)開始運(yùn)行,并將生成的文件推送到同一 repository 下的 gh-pages 分支下.
9如暖、在 GitHub 中前往你的 repository 的設(shè)置頁面笆檀,修改 GitHub Pages 的部署分支為 gh-pages

設(shè)置頁面gh-pages

10盒至、前往 https://<你的 GitHub 用戶名>.github.io 查看你的站點(diǎn)是否可以訪問酗洒。這可能需要一些時(shí)間。

或許你覺得這種基于 Travis CI 的部署方式配置繁瑣妄迁,但你要知道一旦配置走通寝蹈,后期部署都走自動(dòng)化,對(duì)于團(tuán)隊(duì)博客而言能在一定程度上減輕心智負(fù)擔(dān)登淘。你要是真不想配置箫老,推薦使用官方的一鍵部署,但這種部署方式每次都要人工執(zhí)行操作黔州。

后記

還是那句話耍鬓,蘿卜青菜個(gè)有所愛。從 Jekyll 到 Hexo流妻,這趟旅行雖說不易牲蜀,但旅途中的風(fēng)景也是令人難忘。若你還有更好用的博客框架绅这,可留言推薦給筆者和大家涣达。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市证薇,隨后出現(xiàn)的幾起案子度苔,更是在濱河造成了極大的恐慌,老刑警劉巖浑度,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寇窑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡箩张,警方通過查閱死者的電腦和手機(jī)甩骏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來先慷,“玉大人饮笛,你說我怎么就攤上這事∈斓啵” “怎么了缎浇?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赴肚。 經(jīng)常有香客問我素跺,道長(zhǎng)二蓝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任指厌,我火速辦了婚禮刊愚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踩验。我一直安慰自己鸥诽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布箕憾。 她就那樣靜靜地躺著牡借,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袭异。 梳的紋絲不亂的頭發(fā)上钠龙,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音御铃,去河邊找鬼碴里。 笑死,一個(gè)胖子當(dāng)著我的面吹牛上真,可吹牛的內(nèi)容都是我干的咬腋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼睡互,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼根竿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起就珠,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤犀填,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后嗓违,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡图贸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蹂季,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疏日。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡偿洁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沟优,到底是詐尸還是另有隱情涕滋,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布挠阁,位于F島的核電站宾肺,受9級(jí)特大地震影響溯饵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锨用,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一丰刊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧增拥,春花似錦啄巧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猾封,卻和暖如春澄耍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忘衍。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工逾苫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枚钓。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓铅搓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親搀捷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子星掰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容