vuepress基礎(chǔ)搭建

前言

VuePress是尤大為了支持 Vue 及其子項(xiàng)目的文檔需求而寫的一個(gè)項(xiàng)目僧鲁,VuePress界面十分簡(jiǎn)潔,并且非常容易上手掸掏,一個(gè)小時(shí)就可以將項(xiàng)目架構(gòu)搭好」停現(xiàn)在已經(jīng)有很多這種類型的文檔薪韩,如果你有寫技術(shù)文檔的項(xiàng)目的需求,VuePress絕對(duì)可以成為你的備選項(xiàng)之一捌锭。

VuePress特性:

  • 為技術(shù)文檔而優(yōu)化的 內(nèi)置 Markdown 拓展
  • 在 Markdown 文件中使用 Vue 組件的能力
  • Vue 驅(qū)動(dòng)的自定義主題系統(tǒng)
  • 自動(dòng)生成 Service Worker
  • Google Analytics 集成
  • 基于 Git 的 “最后更新時(shí)間”
  • 多語(yǔ)言支持
  • 默認(rèn)主題包含:
    建議先看一下官方文檔1.x

環(huán)境準(zhǔn)備

Windows

  1. 安裝 cmder,使用教程
    解壓完成后復(fù)制其路徑地址躬存,將其添加到環(huán)境變量。
    使用 Win + R 鍵快速啟動(dòng) cmder舀锨,若成功則添加環(huán)境變量成功岭洲。
  2. 安裝 git
    安裝包一路 next 即可,在桌面上右鍵出現(xiàn) git bash here 或命令行中輸入 git --version 能夠得到具體的版本信息則安裝成功坎匿。
  3. 安裝 nodejs
    安裝包同樣一路 next 即可盾剩,在命令行輸入 node -v 雷激,若得到具體版本信息則安裝成功。
  4. 安裝 yarn
    安裝完成后告私,在命令行輸入 yarn --version 屎暇, 若得到具體版本信息則安裝成功。
  5. 創(chuàng)建項(xiàng)目
  • 創(chuàng)建項(xiàng)目可以分為兩種形式:
    • 遠(yuǎn)程倉(cāng)庫(kù)
      # xxx 為你的遠(yuǎn)程倉(cāng)庫(kù)連接
      git clone xxx
      cd your_project_name
      npm init -y
      
    • 本地倉(cāng)庫(kù)
      # xxx 為你的遠(yuǎn)程倉(cāng)庫(kù)連接
      npm init your_project_name -y
      cd your_project_name
      git remote add origin xxx
      
  1. 安裝 vuepress
# 全局安裝
yarn global add vuepress@next # 或者:npm install -g vuepress@next

# 本地安裝
yarn add -D vuepress@next # 或者:npm install -D vuepress@next
  1. 配置 package.json 腳本
    如果你的文檔不是在 docs 下驻粟,可以按照你的設(shè)置來(lái):
{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}

上面配置完后根悼,可以進(jìn)行測(cè)試:

yarn docs:dev # 或者:npm run docs:dev

若能在瀏覽器中正常訪問(wèn),則表示安裝成功蜀撑。

搭建及優(yōu)化

1.配置路由及導(dǎo)航

關(guān)于文件是如何渲染為對(duì)應(yīng)的路由的:

文件的相對(duì)路徑 頁(yè)面路由地址
/README.md /
/guide/README.md /guide/
/config.md /config.html
  • 了解了這個(gè)基本的概念后挤巡,就可以去配置對(duì)應(yīng)的導(dǎo)航了。具體的導(dǎo)航欄配置介紹可以看 官方文檔
  • 在實(shí)踐后發(fā)現(xiàn)酷麦,若將所有內(nèi)容放置在 docs/.vuepress/config.js 下將會(huì)很臃腫矿卑,難以閱讀與維護(hù),推薦將其分離開(kāi)沃饶,在根目錄下新建一個(gè) config 文件夾:
// docs/.vuepress/config.js
const navConf = require('../../config/navConf.js');

module.exports = {
  themeConfig: {
    nav: navConf
  },
}
  • 舉個(gè)例子:
module.exports = [
    { text: 'Home', link: '/' },
    { text: 'Guide', link: '/guide/' },
    { text: 'External', link: 'https://google.com' },
    {
        text: 'Languages',
        items: [
            { text: 'Chinese', link: '/language/chinese/' },
            { text: 'Japanese', link: '/language/japanese/' }
        ]
    },
    {
        text: '關(guān)于',
        items: [
            { text: '關(guān)于我', items: [
            { text: '個(gè)人介紹', link: '/about/SelfIntroduction/' },
            ]},
            { text: '個(gè)人簡(jiǎn)歷', items: [
            { text: '簡(jiǎn)歷', link: '/about/CurriculumVitae/' }
            ]}
        ]
    }
]

2.配置側(cè)邊欄

  • 側(cè)邊欄比導(dǎo)航欄要更為繁瑣一些母廷。具體的導(dǎo)航欄配置介紹可以看 官方文檔
  • 首先在 docs 文件夾下新建你需要的目錄及文件:
about
├── CurriculumVitae
│   ├── viate1.md
│   ├── viate2.md
│   ├── viate3.md
│   └── README.md
├── SelfIntroduction
    ├── self1.md
    └── README.md
  • 配置 config 文件糊肤,當(dāng)文章很多的情況下琴昆,還集中在 config 文件中,那就得炸了:
// docs/.vuepress/config.js
const sidebarConf = require('../../config/sidebarConf/index.js');

module.exports = {
  themeConfig: {
    sidebar: sidebarConf
  },
}
  • 文章需要進(jìn)行分類馆揉,所以會(huì)分成更多的子文件业舍,通過(guò) index.js 進(jìn)行管理:
# config/sidebarConf

sidebarConf
├── about
│   ├── algorithm
│   │   └── index.js
│   ├── clean
│   │   └── index.js
│   ├── git
│   │   └── index.js
│   └── interview
│       └── index.js

// config/sidebarConf/index.js

const CurriculumVitae = require('./about/CurriculumVitae/index');
const SelfIntroduction = require('./about/SelfIntroduction/index');

module.exports = {
    '/about/CurriculumVitae/': CurriculumVitae,
    '/about/SelfIntroduction/': SelfIntroduction,
   // 根目錄下的 sidebar, 對(duì)于所有未匹配到的都會(huì)應(yīng)用該 sidebar
  // '/': [''] // 此處選擇禁用
};

// config/sidebarConf/about/CurriculumVitae/index.js
const utils = require('../../../../utils/index');
const children = ['', 'viate1', 'viate2','viate3']
module.exports =[
    utils.genSidebar('個(gè)人簡(jiǎn)歷', children, false ),
];

//genSidebar 函數(shù):
// utils/index.js
const utils = {
  //生成側(cè)邊欄
  genSidebar: function(title, children = [''], collapsable = true, sidebarDepth = 1) {
    return {
      title,   // 必要的
      children,
      collapsable, // 可選的, 默認(rèn)值是 true,
      sidebarDepth,    // 可選的, 默認(rèn)值是 1
    }
  }
};
module.exports = utils;

3.SEO配置

  • 基本配置可以幫助我們做好網(wǎng)站的 SEO,更容易被搜索到把介。具體的基本配置介紹可以看 官方文檔
// docs/.vuepress/config.js
module.exports = {
  title: '飛躍高山與大洋的魚(yú)',
  description: '飛躍高山與大洋的魚(yú)的文檔, vuepress 文檔',
}

4.更新時(shí)間與靜態(tài)資源

  • 更新時(shí)間勤讽,如果按照文檔進(jìn)行配置的話時(shí)間格式是非中文的風(fēng)格蟋座,解決很簡(jiǎn)單:
// 添加多語(yǔ)言拗踢,改為國(guó)內(nèi)即可
module.exports = {
  locales: {
    '/': {
      lang: 'zh-CN', 
    }
  },
  themeConfig: {
    lastUpdated: '上次更新',
  },
}
  • 所有的靜態(tài)資源都需要放置在 .vuepress/public 目錄下,你也可以為它們建立分類文件夾(這里不好的效果是在預(yù)覽本地的 Markdown 文件時(shí)無(wú)法看到圖片):
public
├── apple-touch-icon.png
├── app.png
├── base
│   └── interview
│       └── 1468042984788341.png
├── favicon-32x32.png
├── favicon.ico
├── FrontEnd
│   └── javascript
│       ├── es6_20190112123602.png
│       └── es6_20190112124206.png
├── manifest.json

5.部署到 github 并關(guān)聯(lián)到自定義域名

具體的部署介紹可以看官方文檔
我這里沒(méi)有自定義域名向臀,使用的githuPage,發(fā)布到的是https://<USERNAME>.github.io/yufanBlog/,
所以需要再配置文件設(shè)置base屬性巢墅,指定yufanBlog倉(cāng)庫(kù)

# .vurpress/config.js 
base: "/yufanBlog/",
#!/usr/bin/env sh

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

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

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

# 如果是發(fā)布到自定義域名
# echo 'www.example.com' > CNAME

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

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

cd -

6. 添加 Git 倉(cāng)庫(kù)和編輯鏈接

參考文檔同上:

// docs/.vuepress/config.js

module.exports = {
  themeConfig: {
    // 你的 Git 項(xiàng)目地址,添加后會(huì)在導(dǎo)航欄的最后追加
    repo: 'shanyuhai123/documents',
    // 啟用編輯
    editLinks: true,
    // 編輯按鈕的 Text
    editLinkText: '編輯文檔券膀!',
    // 編輯文檔的所在目錄
    docsDir: 'docs',
    // 假如文檔放在一個(gè)特定的分支下:
    // docsBranch: 'master',
  },
}

7.域名解析

關(guān)于域名解析詳情可以去看 視頻 (第五個(gè)視頻中的解析方式存在問(wèn)題)君纫。
解析方式需要改為 CNAME 的形式:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芹彬,隨后出現(xiàn)的幾起案子蓄髓,更是在濱河造成了極大的恐慌,老刑警劉巖舒帮,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件会喝,死亡現(xiàn)場(chǎng)離奇詭異陡叠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)肢执,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門枉阵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人预茄,你說(shuō)我怎么就攤上這事兴溜。” “怎么了耻陕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拙徽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我淮蜈,道長(zhǎng)斋攀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任梧田,我火速辦了婚禮淳蔼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裁眯。我一直安慰自己鹉梨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布穿稳。 她就那樣靜靜地躺著存皂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逢艘。 梳的紋絲不亂的頭發(fā)上旦袋,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音它改,去河邊找鬼疤孕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛央拖,可吹牛的內(nèi)容都是我干的祭阀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鲜戒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼专控!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起遏餐,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤伦腐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后失都,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柏蘑,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颖系,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辩越。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘁扼。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖黔攒,靈堂內(nèi)的尸體忽然破棺而出趁啸,到底是詐尸還是另有隱情,我是刑警寧澤督惰,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布不傅,位于F島的核電站,受9級(jí)特大地震影響赏胚,放射性物質(zhì)發(fā)生泄漏访娶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一觉阅、第九天 我趴在偏房一處隱蔽的房頂上張望崖疤。 院中可真熱鬧,春花似錦典勇、人聲如沸劫哼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)权烧。三九已至,卻和暖如春伤溉,著一層夾襖步出監(jiān)牢的瞬間般码,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工乱顾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留板祝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓糯耍,卻偏偏與公主長(zhǎng)得像扔字,于是被迫代替她去往敵國(guó)和親囊嘉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子温技,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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