文檔如何自動化部署到線上環境「每個前端都可以擁有自己的博客」
前言
說起文檔,我們可能會第一時間會想起很多技術文檔,比如Vue.js文檔、React.js文檔、TypeScript文檔,它們都有相似的布局和樣式。
那么,作為開發者的我們,怎么不也搞一個類似于技術文檔的網站作為自己的博客呢?現在有很多開源的項目可以做博客,比如基于Vue.js開發的Vuepress以及同一家的Vitepress,還有基于React.js開發的Docusaurus。這么多方案,我們今天就拿Vuepress為例來搞一下線上可以訪問的博客。
在開始實戰之前呢!透露一下最近在搞得開源庫Strve.js,它是一個可以將字符串轉換為視圖的JS庫,換句話講,也可以說是一款輕量的MVVM框架。目前Strve.js官方文檔就是用的基于Vuepress來進行開發部署的,感興趣的可以訪問下方的官方文檔源碼地址,可以根據我的來進行自定義配置自己的博客網站。如果覺得不錯的話,別忘了幫忙點個Star啊!
Strve.js官方文檔源碼地址
- https://github.com/maomincoding/strvejs-doc
Strve.js官方文檔
- https://maomincoding.github.io/strvejs-doc/
實戰
自己親身實戰所攢下的經驗,請認真往下看哦!
學習一個新技術,我們首先做得事就是打開官網文檔,根據快速上手或者指南來進行大致的了解。
第一步
打開Vuepress官網:
- https://vuepress.vuejs.org/zh/
官網上怎么安裝Vuepress項目已經很詳細了,這里就不再闡述,可以根據快速上手快速搭建一個Vuepress項目。
- https://vuepress.vuejs.org/zh/guide/getting-started.html
一般搭建完成之后,會顯示以下目錄結構:
- .
- ├── docs
- │ ├── .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
第二步
假設你已經在第一步中成功搭建起了項目,并且成功啟動。下面,我們將會改改代碼看下都是什么效果。
首先,我會看下這個文件doc > README.md,這個文件你可以把它理解成首頁。
- .
- ├─ docs
- │ ├─ README.md
以Strve.js文檔首頁為例:
- ---
- home: true
- heroImage: /logo.png
- heroText: Strve.js
- tagline: 一個可以將字符串轉換為視圖的JS庫
- actionText: 快速上手 →
- actionLink: /zh/started/
- features:
- - title: ⚡️ 快速地
- details: 超快的虛擬 DOM。
- - title: 📦 空間小
- details: 源代碼文件大小僅僅4kb。
- - title: 🗂 靈活地
- details: 易于靈活地拆裝不同的代碼塊。
- footer: MIT Licensed | Copyright © 2021-present maomincoding
- ---
上面的格式是Front Matter,可以根據官方文檔進行詳細配置。
- https://vuepress.vuejs.org/zh/theme/default-theme-config.html#首頁
第三步
那么下面你需要關注的是Vuepress配置文件——config.js。
- .
- ├─ docs
- │ └─ .vuepress
- │ └─ config.js
同樣,拿Strve.js官網文檔為例:
- module.exports = {
- base: '/strvejs-doc/', // /site/strvejs/
- title: 'Strve.js',
- description: 'A JS library that can convert strings into view',
- head: [
- ['link', { rel: 'icon', href: '/logo.png' }],
- ],
- markdown: {
- lineNumbers: true
- },
- locales: {
- '/': {
- lang: 'en-US',
- title: 'Strve.js',
- description: 'A JS library that can convert strings into view'
- },
- '/zh/': {
- lang: 'zh-CN',
- title: 'Strve.js',
- description: '一個可以將字符串轉換為視圖的JS庫'
- }
- },
- themeConfig: {
- displayAllHeaders: true,
- sidebar: 'auto',
- sidebarDepth:4,
- nav: [
- { text: 'GitHub', link: 'https://github.com/maomincoding/strve' }
- ],
- locales: {
- '/': {
- selectText: 'Languages',
- label: 'English',
- ariaLabel: 'Languages',
- sidebar: [
- {
- title: 'Introduce',
- path: '/introduce/',
- },
- {
- title: 'Install',
- path: '/install/',
- },
- {
- title: 'Started',
- path: '/started/',
- },
- {
- title: 'Usage',
- path: '/usage/',
- },
- {
- title: 'Tool',
- path: '/tool/',
- },
- {
- title: 'Other',
- path: '/other/',
- }
- ],
- },
- '/zh/': {
- selectText: '選擇語言',
- label: '簡體中文',
- sidebar: [
- {
- title: '介紹',
- path: '/zh/introduce/',
- },
- {
- title: '安裝',
- path: '/zh/install/',
- },
- {
- title: '快速上手',
- path: '/zh/started/',
- },
- {
- title: '使用',
- path: '/zh/usage/',
- },
- {
- title: '工具',
- path: '/zh/tool/',
- },
- {
- title: '其它',
- path: '/zh/other/',
- }
- ],
- }
- },
- smoothScroll: true
- }
- }
看到這些配置不要慌,都可以從官方文檔配置選項中可以找到。
- https://vuepress.vuejs.org/zh/config/
其次,需要重點說明的是我這里/和/zh是提供了多語言支持配置路徑,可以通過官方文檔的多語言支持選項進行配置。
第四步
我之所以很簡單地概括前面的步驟,是因為官網文檔講解的比我更明白更詳細,我也不想浪費大家的時間。
下面,我們就要開始部署。在部署打包之前呢!我們首先要注意的是配置文件,我們回到之前的配置文件。
我們需要注意的是base選項,
- module.exports = {
- base: '/strvejs-doc/',
- title: 'Strve.js',
- description: 'A JS library that can convert strings into view',
- head: [
- ['link', { rel: 'icon', href: '/logo.png' }],
- ]
- }
打開package.json文件。
- {
- "name": "strvejsdoc",
- "version": "1.0.0",
- "description": "Strve.js document address",
- "main": "index.js",
- "license": "MIT",
- "private": false,
- "scripts": {
- "dev": "vuepress dev docs",
- "build": "vuepress build docs"
- },
- "devDependencies": {
- "vuepress": "^1.8.2"
- }
- }
我們看到"scripts"屬性下有"build"指令。運行打包即可。
打包后,默認會打包到dist文件夾中,你可以把文件夾中的內容放到線上網站上去,如果沒有網站,也沒有關系。本篇文章就是讓每個前端都擁有一個屬于自己的博客線上網站。
- .
- ├── docs
- │ ├── .vuepress
- │ │ ├── dist
第五步
我們會用到GitHub,所以需要創建一個倉庫,名字可以起一個好記的。我這里因為是以Strve.js為例,所以名為strvejs-doc。然后你需要做的是使用SSH方式Clone下來。
如果沒有配置SSH的可以根據我下面的步驟操作一下。
切換到 .ssh目錄
- cd ~/.ssh
瀏覽文件夾目錄
- ls
輸入你的郵箱(郵箱不必與GitHub賬號相同,個人郵箱即可),然后一直回車
- ssh-keygen -t rsa -C "郵箱"
自動啟動
- eval "$(ssh-agent -s)"
添加文件
- ssh-add ~/.ssh/id_rsa
查看 id_rsa.pub 文件的內容,復制一下,留存。
- cat id_rsa.pub
下面,我們就要打開Github,點擊右上角個人頭像下拉菜單中的Settings選項,然后點擊左邊欄的SSH and GPG keys選項。
點擊 New SSH key 按鈕。
輸入Title 下的內容,這里隨便起一個好記的標題。
然后輸入Key 下的內容,把剛才保存的id_rsa.pub 文件的內容復制到里面。
現在,大功告成!
以后,你只需要復制項目倉庫中 Clone按鈕下的 SSH 選項框中的鏈接。
然后,Clone 這個鏈接即可。
Clone 下倉庫之后,然后可以把剛才Vuepress項目導入進去。
最后,Push一下。
第六步
首先,我們需要創建一個分支,比如命名pages。然后,打開GitHub遠程倉庫,點擊項目倉庫Tab欄上的Settings選項,然后點擊Pages選項。
最后,在Source下選擇剛才創建的pages分支,然后選擇/(root),點擊Save保存按鈕。
不出意外,上方會給出一個網址,這里我們先保存一下,待會配置完成我們再點擊瀏覽網址。
第七步
在項目根目錄下創建一個deploy.sh文件,編輯如下內容:
- #!/usr/bin/env sh
- set -e
- npm run build
- cd docs/.vuepress/dist
- git init
- git add -A
- git commit -m 'deploy'
- # 如果發布到 https://<USERNAME>.github.io/<REPO>
- git push -f git@github.com:<USERNAME>/<REPO>.git master:pages
- cd -
這里你需要自定義的是:USERNAME、REPO、master:pages,分別對應用戶名、倉庫名、(一般是master:分支名或者main:分支名)。
第八步
我們在package.json文件中定義一個調試命令。
- "scripts": {
- "sh":"bash deploy.sh"
- }
然后運行此命令。
最后,我們在瀏覽器上打開剛才的網址。
以后,每次更改文檔,只需一條命令,即可更新線上網站。
結語
自動化部署還有別的方案比如Github中的Actions,這里就不再詳細介紹了。趕快來試試上面的方案吧!部署一個屬于自己的博客。