# 28. VuePress
# VuePress 介紹
VuePress 是由 Vue 官方開發出來的靜態網站生成器,讓我們專注於書寫技術文件、部落格文章。
# VuePress 能做到
- 使用 Markdown 語法撰寫文件。
- 使用 Vue 模組開發自定義主題、在 .md 檔中使用 Vue 模組。
- 使用 SPA 運行,提高效能。
# VuePress 與其他服務的差異
(來源: 為什麼不是 Nuxt/Docsify/Hexo/GitBook? (opens new window))
# 快速建立
# 建立步驟
- 建立並進入一個新資料夾
- 使用套件管理工具進行初始化:
npm init
或yarn init
- 將 VuePress 安裝為本地依賴:例如
npm install -D vuepress
- 在根目錄建立 "docs" 資料夾,並在裡面建立檔案 "README.md" 預設為首頁。
- 在 package.json 中添加一些 scripts:
{
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
}
}
- 在本地端啟動伺服器: 例如
npm run docs:dev
- 瀏覽器網址輸入 http://localhost:8080 就能看到結果
# 注意
- 如果現有項目依賴 webpack 3.x,則推薦使用 Yarn 而非 npm 來安裝 VuePress,以免生成錯誤的依賴樹。
# 專案結構
# 結構
.
├── docs
│ ├── .vuepress (可選的,放 vuepress 全局設定)
│ │ ├── components (可選的)
│ │ ├── theme (可選的)
│ │ │ └── Layout.vue
│ │ ├── public (可選的)
│ │ ├── styles (可選的)
│ │ │ ├── index.styl
│ │ │ └── palette.styl
│ │ ├── templates (可選的, 谨慎配置)
│ │ │ ├── dev.html
│ │ │ └── ssr.html
│ │ ├── config.js (可選的,配置文件的入口文件)
│ │ └── enhanceApp.js (可選的)
│ │
│ ├── README.md (預設為專案首頁)
│ ├── guide
│ │ └── README.md
│ └── config.md
│
└── package.json
# 說明
# 專案範例
如果要做出像上圖這樣的專案,我們需要做這些事:
- 在 docs 資料夾中,建立 "day00.md",並輸入內容。
- 在 config.js 檔案中,設定 title、nav、sidebar。
# 建立 day00.md
如上圖,我們可以在 docs 資料夾中建立 .md 檔,專注於使用 Markdown 語法撰寫技術文件、部落格文章。
這些檔案的名稱前面加上 /
就會是這些檔案的路徑,這部分將會在 config.js 進行設定。
# 設定 config.js
在這個範例中,我們會在 config.js 檔案進行以下設定:
module.exports = {
// 專案的主標題,出現在 nav 左方
title: 'VuePress Practice',
themeConfig: {
// 導覽列,陣列包物件,"/檔案名稱" 為該檔案路徑
nav: [
{ text: 'Home', link: '/' },
{ text: 'Day 00', link: '/day00' },
{ text: 'Google', link: 'https://google.com' },
],
// 側邊欄,陣列包陣列
sidebar: [
['/', '首頁'],
['/day00', 'Day 00']
]
}
}
如此一來,就能建立一個簡潔又方便的部落格了。
# 搜尋功能
根據 Alex 在影片中的測試,VuePress 的搜尋只能搜到 Markdown 裡面的內容。若是寫在 Vue component 裡面,引入到 .md 檔案的內容,就搜尋不到了。