Vue3 企業級優雅實戰 - 組件庫框架 - 12 發佈開源組件庫

来源:https://www.cnblogs.com/youyacoder/archive/2023/02/21/17141449.html
-Advertisement-
Play Games

前面使用了 11 篇文章分享基於 vue3 、Monorepo 的組件庫工程完整四件套(組件庫、文檔、example、cli)的開發、構建及組件庫的發佈。本文屬於這 11 篇文章的擴展 —— 如何發佈到 GitHub 上以及如何快速利用 GitHub 發佈組件庫文檔。這樣優雅哥的《組件庫框架》系列便 ...


前面使用了 11 篇文章分享基於 vue3 、Monorepo 的組件庫工程完整四件套(組件庫、文檔、example、cli)的開發、構建及組件庫的發佈。本文屬於這 11 篇文章的擴展 —— 如何發佈到 GitHub 上以及如何快速利用 GitHub 發佈組件庫文檔。這樣優雅哥的《組件庫框架》系列便形成了一個閉環:從開發,到開源。在開始本文之前,請您先註冊 GitHub 賬號並登錄。

1 提交 GitHub

1.1 創建 Repository

登錄 GitHub 後,點擊右上角的 “+” -- “New repository” 創建一個 Repository,如下圖:

image

進入創建倉庫頁面後,填寫倉庫名稱(關於倉庫名稱,優雅哥習慣使用本地的項目名稱),點擊頁面底部的 “Create repository” 按鈕:

image

倉庫創建完成後,便進入該倉庫的頁面,在該頁面上已經清楚的寫著如何將本地代碼提交到 GitHub 倉庫中。

1.2 推送代碼

在命令中進入項目根目錄,依次執行如下命令提交代碼到上面創建的 GitHub 倉庫中

  1. 初始化本地 Git 倉庫:
git init
  1. 添加要提交到 git 的文件:
git add .
  1. 提交代碼到本地倉庫:
git commit -m 'feat: 初始化組件庫工程'
  1. 設置主分支:
git branch -M main
  1. 添加遠程倉庫,這行命令可以從上面倉庫創建成功後的頁面中看到:

image

git remote add origin [email protected]:HeroCloudy/yyg-demo-ui.git
  1. 將代碼推送到 GitHub 倉庫中:
git push -u origin main

這樣便將本地的代碼提交到 GitHub 中了。刷新倉庫的頁面,顯示如下:

image

後續代碼如果有修改,首先使用 git commit 提交到本地倉庫,再通過 git push 命令即可推送到 GitHub。

2 發佈組件庫文檔

代碼已經在 GitHub 上發佈了,接下來咱們希望充分使用 GitHub 的資源,將組件庫打包後的文檔發佈到 GitHub 上,讓使用者能夠直接訪問該文檔。

GitHub 提供了一個能力 pages,通過 pages 可以讓咱們發佈靜態 HTML 資源到 GitHub 上,並支持以 HTTP 的形式訪問到網頁。

實現思路如下:

  1. 構建組件庫文檔;
  2. 將構建後的組件庫文檔(./docs/.vitepress/dist)提交並推送到倉庫的另一個分支上;
  3. 配置 GitHub Pages,讓其指向上面的新分支。

2.1 構建組件庫文檔

咱們之前配置了組件庫文檔的構建命令:

pnpm run docs:build

等待構建完成,會看到打包後的內容位於 ./docs/.vitepress/dist 目錄下。

2.2 推送到 github 新分支

文檔構建完成後,需要將其提交到一個新分支上,如果手動操作,會比較繁瑣,優雅哥推薦使用一個 npm 工具來幫咱們完成這個操作 —— gh-pages

在項目根目錄下安裝 gh-pages

pnpm install gh-pages -D -w

接下來就可以使用 gh-pages 將指定目錄提交到 github 的新分支(gh_pages分支)上:

gh-pages -d docs/.vitepress/dist

稍等一會兒,控制臺中會提示 Published,那就說明發佈成功,這時候可以看看倉庫的分支:

首先執行 git fetch 拉取 GitHub 上最新的分支信息,然後執行 git branch -a 查看本地和遠程所有的分支,輸出如下:

image

可以看到遠程多了一個名為 gh-pages 的分支。咱們同樣可以在 GitHub 的倉庫首頁看到該分支:

image

回顧一下,上面的操作涉及兩個步驟:

  1. 打包組件庫文檔
  2. 將文檔打包後的內容推送到 gh-pages 分支。

咱們可以在項目根目錄的 package.json 中添加一個新的 script 合併上面兩個操作:

"scripts": {
  ...
  "docs:deploy": "pnpm run docs:build && gh-pages -d docs/.vitepress/dist",
  ...
},

後面組件庫文檔修改內容時,只需要執行 pnpm run docs:deploy 即可。

2.3 配置 GitHub Pages

1)在倉庫首頁點擊 Settings 按鈕,進入倉庫設置頁

image

2)點擊設置頁左側的 pages,進入 GitHub Pages 頁面,在該頁面中可以看到預設為咱們配置了 gh-pages 分支,同時也告訴了咱們訪問地址:

image

3)在瀏覽器中訪問該路徑,會發現顯示不正常,這是因為組件庫文檔模塊配置的上下文路徑(BaseUrl)與真實的上下文路徑不同導致的。

2.4 組件庫文檔上下文路徑區分環境

最後咱們需要修改組件庫的上下文路徑。如果簡單處理,就是修改 docs/.vitepress/config.ts 中導出對象的 base 屬性的值即可。在 github pages 中的上下文路徑為:/yyg-demo-ui/,所以只需要簡單將 base: '/' 修改為 base: '/yyg-demo-ui/'。但如此一來,在本地開發時訪問路徑也需要攜帶這個上下文 http://localhost:3100/yyg-demo-ui

那如何實現本地開發使用 /,打包構建使用 /yyg-demo-ui/ 呢?只需要如下三步便可實現:

1)在 docs 模塊中添加開發依賴 minimist,該依賴用於提取命令中的參數:

pnpm install minimist -D

2)修改 docs 模塊中的 build 命令,為該命令添加個 build 參數:

"scripts": {
	...
	"build": "vitepress build --build",
	...
},

3)在 docs/.vitepress/config.ts 中判斷當前運行模式是 dev 或 build,根據判斷結果指定 base 的值:

import minimist from 'minimist'
....

const argv = minimist(process.argv.slice(2))
const build = argv.build || false

export default defineConfig({
  ...
  base: build ? '/yyg-demo-ui/' : '/',
  ...
})

這樣咱們就能根據不同的運行方式指定不同的上下文路徑了。

在項目根目錄提交代碼,並重新執行 pnpm run docs:deploy,等待組件庫文檔打包完成和發佈完成顯示 Published 後,再刷新瀏覽器,便可以顯示組件庫文檔的頁面了。如果顯示依舊不正常,可能是網路和緩存的原因,過幾分鐘暴力刷新再試:

image

到此,咱們便完成了組件庫的開源,將其提交到 GitHub,並使用 GitHub Pages 訪問組件庫的文檔。關於 GitHub 還有很多高級操作,如利用 GitHub 進行 CI/CD,Action runner 等,它可以幫助咱們更加自動化實現很多操作,大家沒事可以多去瞭解。

公眾號 同名“程式員優雅哥” + 更多學習資料。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。 摘要:Flink是一個批處理和流處理結合的統一計算框架,其核心是一個提供了數據分發以及並行化計算的流數據處理引擎。它的最大亮 ...
  • 摘要:你知道數倉是如何應運而生的嗎?你瞭解數倉未來的發展趨勢嗎?想知道國內數倉專家的看法嗎? 導語 數據倉庫的發展一直是備受關註的議題,隨著近年來技術的不斷演進,數倉也在更新迭代。 你知道數倉是如何應運而生的嗎?你瞭解數倉未來的發展趨勢嗎?想知道國內數倉專家的看法嗎? 今天我們邀請到了華為雲數據倉庫 ...
  • ETL的架構 ETL架構的優勢: ETL相對於EL-T架構可以實現更為複雜的數據轉化邏輯 ETL採用單獨的硬體伺服器,可以分擔資料庫系統的負載 ETL與底層的資料庫數據存儲無關,可以保持所有的數據始終在資料庫當中,避免數據的載入和導出,從而保證效率,提高系統的可監控性。 ELT主要通過資料庫引擎來實 ...
  • 九宮格圖片佈局,長按直接拖拽圖片,長按時顯示底部刪除佈局,拖拽到刪除佈局處鬆手可刪除佈局,最後添加按鈕不可拖拽,基於 BaseQuickAdapter 基礎上實現 BaseQuickAdapter 確實很好用,簡化我們的實現代碼,它本身也集成了一套拖拽實現,不過目前無法完美的滿足上面的需求,需要做一 ...
  • 背景 最近,端內在做 webView 統一的時候,個性簽名中的 WebView 替換為 CustomWebView 之後,發現字體突然變小。 一開始不知道是什麼原因,通過二分法查找最近的提交,排查之後,發現是 SignatureWebView 的繼承關係從 WebView 修改為 CustomWeb ...
  • Map Object本質上是鍵值對的集合(Hash結構),但Object只能將字元串當做鍵,這就給Object帶來了很大的限制。 let data = {} let s = { name : '東方不敗' } data[s] = '西方求敗' // 如果鍵傳入非字元串的值,會自動為字元串 conso ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 最近公司出了一個新的功能模塊(如下圖),大提上可以描述為實現拍照完上傳圖片,拖動四方框拍照完成上傳功能,大體樣子如下圖。但是我找遍了 dcloud 插件市場,找到的插件都是移動背景圖片來實現裁剪的,跟京東的功能是相反的,沒辦法只能自己來實 ...
  • 前言 在 JavaScript 中,對象是一種非常常見的數據類型,幾乎每個程式員都會在日常工作中頻繁地使用對象。在本篇文章中,我們將深入瞭解 JavaScript 對象的一些基本概念和一些高級概念,這些概念對於我們正確理解對象在 JavaScript 中的行為非常重要。 對象的基本概念 在 Java ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...