首頁 > web前端 > Vue.js > 主體

一文快速教你用VuePress + Github Pages搭建一個部落格(實戰)

青灯夜游
發布: 2021-12-20 18:45:40
轉載
3125 人瀏覽過

這篇文章給大家分享一個VuePress實戰,透過本文教你如何快速用VuePress Github Pages搭建一個博客,希望對大家有所幫助。

一文快速教你用VuePress + Github Pages搭建一個部落格(實戰)

最近完成了 TypeScript 最新官方文件 Hanbook 的翻譯,一共十四篇,堪稱國內的最好 TypeScript4 入門教程之一。為了方便大家閱讀,我用VuePress Github Pages 搭建了博客,博客效果如下:

#0. VuePress

#VuePress 自然不用多說,基於Vue 的靜態網站產生器,風格簡約,配置也比較簡單。之所以不使用VitePress,是因為想使用現有的主題, 而VitePress 不相容於當前VuePress 的生態系統,至於為什麼不選擇VuePress@next,考慮到還處於Beta階段,等穩定後再開始遷移。 【相關推薦:《vue.js教學》】

1. 本地搭建

快速開始同VuePress 官網

#1、建立並進入一個新目錄

// 文件名自定义
mkdir vuepress-starter && cd vuepress-starter
登入後複製

2、使用你喜歡的套件管理器進行初始化

yarn init # npm init
登入後複製

3、將VuePress 安裝為本地依賴

yarn add -D vuepress # npm install -D vuepress
登入後複製

4 、建立你的第一篇文檔,VuePress 會以docs 為文檔根目錄,所以這個README.md 相當於主頁:

mkdir docs && echo '# Hello VuePress' > docs/README.md
登入後複製

5、在package.json 中加入一些scripts

{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}
登入後複製

6、在本機啟動伺服器

yarn docs:dev # npm run docs:dev
登入後複製

VuePress 會在http://localhost:8080 (opens new window) 啟動一個熱重載的開發伺服器。

2. 基礎設定

在文件目錄下建立一個 .vuepress 目錄,所有 VuePress 相關的檔案都會被放在這裡。此時你的專案結構可能是這樣:

.
├─ docs
│  ├─ README.md
│  └─ .vuepress
│     └─ config.js
└─ package.json
登入後複製

.vuepress 資料夾下加入config.js,設定網站的標題和描述,方便SEO:

module.exports = {
  title: 'TypeScript4 文档',
  description: 'TypeScript4 最新官方文档翻译'
}
登入後複製

此時介面類似:

3. 新增導覽列

我們現在在頁首的右上角新增導覽列,修改config.js:

module.exports = {
    title: '...',
    description: '...',
    themeConfig: {
        nav: [
            { text: '首页', link: '/' },
            { 
                text: '冴羽的 JavaScript 博客', 
                items: [
                    { text: 'Github', link: 'https://github.com/mqyqingfeng' },
                    { text: '掘金', link: 'https://juejin.cn/user/712139234359182/posts' }
                ]
            }
        ]
    }
}
登入後複製

效果如下:

#更多的設定參考VuePress 導覽列:

https://vuepress.vuejs.org/zh/theme/default-theme-config.html#導覽列

4. 新增側邊欄

#現在我們加入一些md 文檔,目前文檔的目錄如下:

.
├─ docs
│  ├─ README.md
│  └─ .vuepress
│     └─ config.js
|  └─ handbook
|  	  └─ ConditionalTypes.md
|	    └─ Generics.md
└─ package.json
登入後複製

我們在config.js 配置如下:

module.exports = {
    themeConfig: {
        nav: [...],
        sidebar: [
            {
                title: '欢迎学习',
                path: '/',
                collapsable: false, // 不折叠
                children: [
                    { title: "学前必读", path: "/" }
                ]
            },
            {
              title: "基础学习",
              path: '/handbook/ConditionalTypes',
              collapsable: false, // 不折叠
              children: [
                { title: "条件类型", path: "/handbook/ConditionalTypes" },
                { title: "泛型", path: "/handbook/Generics" }
              ],
            }
          ]
    }
}
登入後複製

對應的效果如下:

5. 更換主題

現在基本的目錄和導航功能已經實現,但如果我還想要載入loading、切換動畫、模式切換(暗黑模式)、回頂部、評論等功能呢,為了簡化開發成本,我們可以直接使用主題,這裡使用的主題是vuepress-theme-rec(https://vuepress-theme-reco.recoluan.com/):

現在我們安裝vuepress-theme-reco:

npm install vuepress-theme-reco --save-dev
# or
yarn add vuepress-theme-reco
登入後複製

然後在config.js 裡引用主題:

module.exports = {
  // ...
  theme: 'reco'
  // ...
}
登入後複製

刷新頁面,我們會發現一些細節的改變,例如載入時的loading 動畫、以及支援切換暗黑模式:

#6. 新增文章資訊

但我們也會發現,像條件類型這篇文章,條件類型(Conditional Types) 竟然出現了兩遍,這是因為這個主題自動提取了第一個大標題作為本文的標題,我們可以在每篇文章的md文件中加入一些資訊修改:

---
title: 条件类型
author: 冴羽
date: '2021-12-12'
---
登入後複製

此時文章的效果如下:

但如果你不想要标题、作者、时间这些信息呢,我们可以在样式里隐藏,这个稍后会讲到。

7. 设置语言

注意,上图的文章时间,我们写入的格式为 2021-12-12 ,但是显示的是 12/12/2021,这是因为 VuePress 默认的 lang 为 en-US,我们修改一下 config.js:

module.exports = {
  // ...
  locales: {
    '/': {
      lang: 'zh-CN'
    }
  },
  // ...
}
登入後複製

可以发现时间换了一种展示方式:

8. 开启目录结构

在原本的主题里,我们发现每篇文章的目录结构出现在左侧:

而 vuepress-theme-reco 将原有的侧边栏的中的多级标题移出,生成子侧边栏,放在了页面的右侧,如果你要全局开启,可在页面 config.js 里设置开启:

module.exports = {
  //...
  themeConfig: {
    subSidebar: 'auto'
  }
  //...
}
登入後複製

此时效果如下:

9. 修改主题颜色

VuePress 基于 Vue,所以主题色用的是 Vue 的绿色,然而 TypeScript 的官方色则是蓝色,那如何修改 VuePress 的主题色呢?

你可以创建一个 .vuepress/styles/palette.styl 文件,文件代码如下:

$accentColor = #3178c6
登入後複製

此时可以发现主题颜色变了:

更多的颜色修改参考 VuePress 的 palette.styl

10. 自定义修改样式

如果你想自定义修改一些 DOM 元素的样式呢?就比如在暗黑模式下:

我们发现用作强调的文字颜色比较暗淡,在暗黑模式下看不清楚,我想改下这个文字的颜色和背景色呢?

而 VuePress 提供了一种添加额外样式的简便方法。你可以创建一个 .vuepress/styles/index.styl 文件。这是一个 Stylus 文件,但你也可以使用正常的 CSS 语法。

我们在 .vupress 文件夹下创建这个目录,然后创建 index.styl 文件,代码如下:

// 通过检查,查看元素样式声明
.dark .content__default code {
    background-color: rgba(58,58,92,0.7);
    color: #fff;
}
登入後複製

此时文字就清晰了很多:

那之前我们提到的隐藏每篇文章的标题、作者、时间呢,其实也是类似的方式:

.page .page-title {
   display: none;
}
登入後複製

最后的效果如下:

11. 部署

我们的博客就算是正式的做好了,接下来我们部署到免费的 Github Pages 上。我们在 Github 上新建一个仓库,这里我取得仓库名为:learn-typescript

对应,我们需要在 config.js 添加一个 base 路径配置:

module.exports = {
  	// 路径名为 "/<REPO>/"
    base: &#39;/learn-typescript/&#39;,
  	//...
}
登入後複製

最终的 config.js 文件内容为:

module.exports = {
    title: &#39;TypeScript4 文档&#39;,
    description: &#39;TypeScript4 最新官方文档翻译&#39;,
    base: &#39;/learn-typescript/&#39;,
    theme: &#39;reco&#39;,
    locales: {
        &#39;/&#39;: {
          lang: &#39;zh-CN&#39;
        }
    },
    themeConfig: {
        // lastUpdated: &#39;上次更新&#39;,
        subSidebar: &#39;auto&#39;,
        nav: [
            { text: &#39;首页&#39;, link: &#39;/&#39; },
            { 
                text: &#39;冴羽的 JavaScript 博客&#39;, 
                items: [
                    { text: &#39;Github&#39;, link: &#39;https://github.com/mqyqingfeng&#39; },
                    { text: &#39;掘金&#39;, link: &#39;https://juejin.cn/user/712139234359182/posts&#39; }
                ]
            }
        ],
        sidebar: [
            {
                title: &#39;欢迎学习&#39;,
                path: &#39;/&#39;,
                collapsable: false,
                children: [
                    { title: "学前必读", path: "/" }
                ]
            },
            {
              title: "基础学习",
              path: &#39;/handbook/ConditionalTypes&#39;,
              collapsable: false,
              children: [
                { title: "条件类型", path: "/handbook/ConditionalTypes" },
                { title: "泛型", path: "/handbook/Generics" }
              ],
            }
          ]
    }
}
登入後複製

然后我们在项目 vuepress-starter 目录下建立一个脚本文件:deploy.sh,注意修改一下对应的用户名和仓库名:

#!/usr/bin/env sh

# 确保脚本抛出遇到的错误
set -e

# 生成静态文件
npm run docs:build

# 进入生成的文件夹
cd docs/.vuepress/dist

git init
git add -A
git commit -m &#39;deploy&#39;

# 如果发布到 https://<USERNAME>.github.io/<REPO>
git push -f git@github.com:mqyqingfeng/learn-typescript.git master:gh-pages

cd -
登入後複製

然后命令行切换到 vuepress-starter 目录下,执行  sh deploy.sh,就会开始构建,然后提交到远程仓库,注意这里提交到了 gh-pages 分支,我们查看下对应仓库分支的代码:

我们可以在仓库的 Settings -> Pages 中看到最后的地址:

像我最後產生的位址就是 https://mqyqingfeng.github.io/learn-typescript/

##至此,我們完成了VuePress 和Github Pages 的部署。

更多程式相關知識,請造訪:

程式設計入門! !

以上是一文快速教你用VuePress + Github Pages搭建一個部落格(實戰)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板