跟著這篇文章做完,你就會(huì)搭建個(gè)人博客了妈候!

前言

我相信每一個(gè)程序員入門(mén)時(shí)敢靡,都經(jīng)歷過(guò)搭建一個(gè)個(gè)人博客這樣的階段。確實(shí)這是一個(gè)好的練手項(xiàng)目苦银,而搭建博客難度也可高可低啸胧,取決于個(gè)人目標(biāo)。本文提供了一個(gè)選擇幔虏,可基于 GitHubGitHub Pages 功能 和 Vuepress 框架快速地搭建免費(fèi)的markdown博客:

  • 對(duì)于文檔編寫(xiě)者來(lái)說(shuō)纺念,能更專(zhuān)注于寫(xiě)文章
  • 對(duì)于文檔開(kāi)發(fā)者來(lái)說(shuō),一切皆Vue組件想括,能方便地自定義主題

Vuepress官網(wǎng):https://vuepress.vuejs.org/zh/

基本工具

  1. node.js以及npm包管理工具: https://nodejs.org/en/
  2. git工具:https://git-scm.com/downloads

構(gòu)建基本項(xiàng)目結(jié)構(gòu)

  1. 新建一個(gè)名為 blog-demo 的文件夾陷谱,命令行進(jìn)入到該文件夾目錄,輸入命令:
# 按默認(rèn)配置初始化一個(gè)項(xiàng)目瑟蜈,此時(shí)會(huì)在當(dāng)前目錄下生成 package.json 文件
npm init -y
  1. VuePress 作為一個(gè)本地依賴(lài)安裝
npm install -D vuepress
  1. package.json 里的 scripts 中添加如下代碼烟逊,不需要修改其它代碼
{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}
  1. 在項(xiàng)目根目錄下,新建 docs 文件夾
mkdir docs
  1. 新建一個(gè) markdown 文件
echo '# Hello VuePress!' > docs/README.md
  1. 輸入命令啟動(dòng)項(xiàng)目铺根,在瀏覽器中訪問(wèn) http://localhost:8080/ 即可預(yù)覽效果
npm run docs:dev

基本配置

現(xiàn)在我們已經(jīng)構(gòu)建出了最基本的項(xiàng)目結(jié)構(gòu)宪躯,并且可以在瀏覽器中預(yù)覽到 docs 目錄下的 README.md 文件的效果,該文件即是我們網(wǎng)站的首頁(yè)位迂,如圖所示:

基本效果

然而如果沒(méi)有任何配置访雪,用戶(hù)將無(wú)法在網(wǎng)站上自由導(dǎo)航。因此掂林,為了更好地自定義我們的網(wǎng)站臣缀,我們接著在 docs 目錄下新建 .vuepress 文件夾,執(zhí)行命令如下:

# 新建 .vuepress 文件夾
mkdir docs\.vuepress

接著在 .vuepress 文件夾下新建 config.js 文件,這里的 config.js 便是一個(gè) Vuepress 網(wǎng)站必要的配置文件党饮,在其中添加如下代碼:

module.exports = {
  base: '/blog-demo/',
  title: 'blog-demo',
  description: 'Vuepress blog demo'
}

其中配置項(xiàng)的含義為:

  • base:站點(diǎn)的基礎(chǔ)路徑肝陪,它的值應(yīng)當(dāng)總是以斜杠開(kāi)始驳庭,并以斜杠結(jié)束刑顺。這里設(shè)置為 /blog-demo/ 氯窍,我們?cè)俅卧诒镜剡\(yùn)行項(xiàng)目,訪問(wèn)路徑就需要變更為 http://localhost:8080/blog-demo/
  • title:網(wǎng)站的標(biāo)題
  • description:網(wǎng)站的描述

默認(rèn)主題配置

Vuepress 提供了一個(gè)默認(rèn)主題蹲堂,讓我們不必自己去從零實(shí)現(xiàn)復(fù)雜的 markdown 文件渲染狼讨、目錄結(jié)構(gòu)等,直接按照規(guī)則去使用它即可柒竞。如果你想自定義自己的主題政供,請(qǐng)查看官方文檔:Vuepress-開(kāi)發(fā)主題

首頁(yè)

默認(rèn)主題提供了一個(gè)首頁(yè)的布局朽基,想要使用它布隔,需要在你的根級(jí) README.md 以格式 YAML front matter 指定 home: true。因此稼虎,將我們最初創(chuàng)建的 README.md 修改一下:

---
home: true
heroImage: /vue-logo.png
heroText: blog-demo
tagline: 博客示例
actionText: 快速上手 →
actionLink: /
features:
- title: 簡(jiǎn)潔至上
  details: 以 Markdown 為中心的項(xiàng)目結(jié)構(gòu)衅檀,以最少的配置幫助你專(zhuān)注于寫(xiě)作。
- title: Vue驅(qū)動(dòng)
  details: 享受 Vue + webpack 的開(kāi)發(fā)體驗(yàn)霎俩,在 Markdown 中使用 Vue 組件哀军,同時(shí)可以使用 Vue 來(lái)開(kāi)發(fā)自定義主題。
- title: 高性能
  details: VuePress 為每個(gè)頁(yè)面預(yù)渲染生成靜態(tài)的 HTML打却,同時(shí)在頁(yè)面被加載的時(shí)候杉适,將作為 SPA 運(yùn)行。
---
  • heroImage: 首頁(yè)圖片柳击,圖片放置在 .vupress/public 文件夾下猿推,若沒(méi)有該文件夾則自己創(chuàng)建一個(gè),保存一張你想要的首頁(yè)圖片腻暮,并在此處引用彤守。
  • 其它參數(shù)請(qǐng)參考官方文檔:Vuepress-默認(rèn)主題首頁(yè)

導(dǎo)航欄

導(dǎo)航欄可能包含你的頁(yè)面標(biāo)題、搜索框哭靖、 導(dǎo)航欄鏈接具垫、多語(yǔ)言切換、倉(cāng)庫(kù)鏈接试幽,它們均取決于你的配置筝蚕。在 .vupress/config.js 文件添加一些導(dǎo)航欄鏈接:

module.exports = {
    themeConfig: {
        // 你的GitHub倉(cāng)庫(kù),請(qǐng)正確填寫(xiě)
        repo: 'https://github.com/xxxxxxx/blog-demo',
        // 自定義倉(cāng)庫(kù)鏈接文字铺坞。
        repoLabel: 'My GitHub',
        nav: [
            { text: 'Home', link: '/' },
            { text: 'FirstBlog', link: '/blog/FirstBlog.md' }
        ]
    }
}

接著起宽,我們?cè)?docs 目錄下新建 blog 文件夾,在 blog 目錄下創(chuàng)建 /blog/FirstBlog.md 作為我們第一篇博客的內(nèi)容:

# 我的第一篇博客

My First Blog

我們?cè)僭陧?xiàng)目根目錄济榨,即 blog-demo 下坯沪,輸入命令 npm run docs:dev ,瀏覽器中訪問(wèn) http://localhost:8080/blog-demo/ 查看頁(yè)面效果擒滑,點(diǎn)擊頁(yè)面右上角的FirstBlog 可以看到我們第一篇博客:

本地效果預(yù)覽

側(cè)邊欄

最后我們配置側(cè)邊欄腐晾,讓用戶(hù)體驗(yàn)更好一些叉弦,在 .vupress/config.js 文件添加一些代碼:

module.exports = {
  themeConfig: {
    sidebar: [
      ['/', '首頁(yè)'],
      ['/blog/FirstBlog.md', '我的第一篇博客']
    ]
  }
}

本地預(yù)覽

至此我們已經(jīng)完成了一個(gè)最簡(jiǎn)單的博客,再次運(yùn)行項(xiàng)目藻糖,點(diǎn)擊首頁(yè)的按鈕 快速上手 淹冰,我們可以看到:

我的第一篇博客

部署

最后一步,我們需要將代碼部署到GitHub Pages巨柒,具體請(qǐng)參照文檔:Vupress-部署樱拴。

1、首先確定你的項(xiàng)目是否滿(mǎn)足以下條件:

  • 文檔放置在項(xiàng)目的 docs 目錄中
  • 使用的是默認(rèn)的構(gòu)建輸出位置
  • VuePress 以本地依賴(lài)的形式被安裝到你的項(xiàng)目中洋满,在根目錄的 package.json文件中有如下兩段代碼:
// 配置npm scripts
"scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
 }

// VuePress 以本地依賴(lài)的形式被安裝
"devDependencies": {
    "vuepress": "^0.14.8"
}

2晶乔、在github上創(chuàng)建一個(gè)名為 blog-demo 的倉(cāng)庫(kù),并將你的代碼提交到github上牺勾。如果你對(duì)git不熟悉瘪弓,請(qǐng)先閱讀:Git教程-廖雪峰的官方網(wǎng)站

3、在 docs/.vuepress/config.js 文件中設(shè)置正確的 base禽最。

如果打算發(fā)布到 https://<USERNAME>.github.io/<REPO>/(也就是說(shuō)你的倉(cāng)庫(kù)在 https://github.com/<USERNAME>/<REPO>)腺怯,則將 base 設(shè)置為 /<REPO>/,此處我設(shè)置為 /blog-demo/ 川无。

4呛占、在項(xiàng)目根目錄中,創(chuàng)建一個(gè)如下的 deploy.sh 腳本文件懦趋,請(qǐng)自行修改github倉(cāng)庫(kù)地址

#!/usr/bin/env sh

# 確保腳本拋出遇到的錯(cuò)誤
set -e

# 生成靜態(tài)文件
npm run docs:build

# 進(jìn)入生成的文件夾
cd docs/.vuepress/dist

git init
git add -A
git commit -m 'deploy'

# 如果發(fā)布到 https://<USERNAME>.github.io/<REPO>
git push -f git@github.com:<USERNAME>/<REPO>.git master:gh-pages

cd -

5晾虑、雙擊 deploy.sh 運(yùn)行腳本,會(huì)自動(dòng)在我們的 GitHub 倉(cāng)庫(kù)中仅叫,創(chuàng)建一個(gè)名為 gh-pages 的分支帜篇,而我們要部署到 GitHub Pages 的正是這個(gè)分支。

分支提交

6诫咱、這是最后一步了笙隙,在 GitHub 項(xiàng)目點(diǎn)擊 Setting 按鈕,找到 GitHub Pages - Source坎缭,選擇 gh-pages 分支竟痰,點(diǎn)擊 Save 按鈕后,靜靜地等待它部署完成即可掏呼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坏快,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子憎夷,更是在濱河造成了極大的恐慌莽鸿,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 文/潘曉璐 我一進(jìn)店門(mén)啃沪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窄锅,你說(shuō)我怎么就攤上這事创千。” “怎么了入偷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵追驴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疏之,道長(zhǎng)殿雪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任锋爪,我火速辦了婚禮丙曙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘其骄。我一直安慰自己亏镰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布拯爽。 她就那樣靜靜地躺著索抓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毯炮。 梳的紋絲不亂的頭發(fā)上逼肯,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音桃煎,去河邊找鬼篮幢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛为迈,可吹牛的內(nèi)容都是我干的洲拇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼曲尸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赋续!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起另患,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纽乱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后昆箕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鸦列,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡租冠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薯嗤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顽爹。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖骆姐,靈堂內(nèi)的尸體忽然破棺而出镜粤,到底是詐尸還是另有隱情,我是刑警寧澤玻褪,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布肉渴,位于F島的核電站,受9級(jí)特大地震影響带射,放射性物質(zhì)發(fā)生泄漏同规。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一窟社、第九天 我趴在偏房一處隱蔽的房頂上張望券勺。 院中可真熱鬧,春花似錦灿里、人聲如沸朱灿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盗扒。三九已至,卻和暖如春缀去,著一層夾襖步出監(jiān)牢的瞬間侣灶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工缕碎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褥影,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓咏雌,卻偏偏與公主長(zhǎng)得像凡怎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赊抖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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