基于 GitHub Actions 的零成本自動化部署:把 Vite/Vue3 項目一鍵發布到 GitHub Pages 的完整實戰

1. 實現自動化部署

1.1. 創建 vue 項目

# 1. 安裝/確認 Node.js(>=14)
node -v   # 推薦 20.x# 2. 創建項目(交互式,選 Vue3 + Router 等)
npm init vue@latest github-actions-demo   # 創建vite項目
# 或:vue create github-actions-demo # 創建 vuecli項目
cd github-actions-demo# 3. 安裝依賴 & 本地預覽
npm install
npm run dev   # 瀏覽器打開驗證看能否正常運行

1.2. 配置基礎路徑

vite.config.ts / vue.config.js 里的 基礎路徑 設好,避免白屏。

  • Vite:base: '/倉庫名/'
  • Vue CLI:publicPath: '/倉庫名/'

命令

創建的項目類型

配置方式

底層打包工具

npm init vue@latest github-actions-demo

Vite + Vue 官方模板

vite.config.js

Vite(esbuild + Rollup)

vue create github-actions-demo

Vue CLI 官方模板

vue.config.js

Webpack

打開 vite.config.js(沒有則新建)并寫入:

import {fileURLToPath, URL} from "node:url";import {defineConfig} from "vite";
import vue from "@vitejs/plugin-vue";
import vueDevTools from "vite-plugin-vue-devtools";// https://vite.dev/config/
export default defineConfig({plugins: [vue(), vueDevTools()],resolve: {alias: {"@": fileURLToPath(new URL("./src", import.meta.url)),},},base: "/github-actions-demo/", // 配置基礎路徑為倉庫名
});

注意:一定要與倉庫名一致否則會出現找不到資源的問題!!

1.3. 編寫 GitHub Actions Workflow

創建文件 .github/workflows/deploy.yml,復制下面內容:

# GitHub Actions 工作流名稱(隨便取)
name: Deploy Vue 項目到 GitHub Pages# 觸發條件:當推送到 main 分支時觸發
on:push:branches: [main]# 給 GITHUB_TOKEN 授權(否則后面無法部署 Pages)
permissions:contents: read     # 允許讀取倉庫內容pages: write       # 允許寫入 GitHub Pages(發布)id-token: write    # 允許 OIDC 身份驗證(部署時需要)jobs:# 第一個 Job:構建項目build:runs-on: ubuntu-latest  # 在 GitHub 提供的 Ubuntu 最新虛擬機上運行steps:# 1. 檢出(checkout)代碼- uses: actions/checkout@v4# 2. 安裝 Node.js 環境- uses: actions/setup-node@v4with:node-version: 20  # 指定 Node.js 版本為 20cache: npm        # 啟用 npm 緩存,加快安裝速度# 3. 安裝依賴(等價于 npm install,但 npm ci 更快、更穩定)- run: npm ci# 4. 構建打包(Vite 會把代碼打包到 dist 文件夾)- run: npm run build# 5. 上傳打包好的 dist 文件夾,作為 artifact 供后續部署使用- uses: actions/upload-pages-artifact@v3with:path: ./dist  # 指定要上傳的文件夾# 第二個 Job:部署到 GitHub Pagesdeploy:needs: build  # 必須等 build 任務完成后再執行runs-on: ubuntu-latestenvironment:name: github-pages  # 指定部署環境名稱(固定寫法)url: ${{ steps.deployment.outputs.page_url }} # 部署完成后生成的訪問 URLsteps:# 6. 使用 GitHub 官方的 Pages 部署 Action- uses: actions/deploy-pages@v4id: deployment  # 給這個步驟起個 ID,方便引用它的輸出變量

1.4. 本地 Git 初始化并推送到 GitHub

# 1. 新建倉庫(若已 fork/clone 可跳過)
#    GitHub → New repository → 取名 action_vue → 不初始化 README
# 2. 關聯遠程
git init
git add .
git commit -m "feat: init vue cli project"
git branch -M main
git remote add origin https://github.com/xxxx/xxxx.git # 替換成自己的路徑
git push -u origin main

這一階段是要把所有代碼都提交到倉庫上,使用 VScode 自帶的 git 工具提交也可以。

1.5. 驗證 Actions 運行

回到倉庫 → Actions 標簽頁,應出現綠色對勾 ?。

1.6. 開啟 Pages 服務

  1. Settings → Pages → Source 選 GitHub Actions
  2. 等 2-3 分鐘 ,Pages 會提示部署成功,顯示:Your site is live at https://<用戶名>.github.io/<倉庫名>/,訪問這個地址就能看到線上版本。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95985.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95985.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95985.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

minio 文件批量下載

MinIO 批量下載功能說明 1. 功能描述 前端勾選多個對象文件后&#xff0c;一次性將這些對象從 MinIO 拉取并打包成 ZIP&#xff0c;通過瀏覽器直接下載。整體特性&#xff1a; 支持跨桶批量下載&#xff08;不同 bucket 的對象可同時下載&#xff09;。服務端采用流式壓縮邊…

機器學習11——特征選擇與稀疏學習

上一章&#xff1a;機器學習10——降維與度量學習 下一章&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備[TOC] 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到…

整理python快速構建數據可視化前端的Dash庫

一.Dash框架# 導入 Dash 相關庫 import dash from dash import dcc, html # dcc 是 Dash 核心組件庫&#xff0c;html 是 HTML 組件庫 from typing import Generic# 創建一個 Dash 應用實例 app dash.Dash(__name__)# 定義應用的布局 app.layout html.Div(children[# 添加一…

RNN循環神經網絡(一):基礎RNN結構、雙向RNN

RNN循環神經網絡 什么是循環神經網絡&#xff1f; 循環神經網絡&#xff08;Recurrent Neural Network, RNN&#xff09;是一類專門用于處理序列數據的神經網絡架構。與傳統的前饋神經網絡不同&#xff0c;RNN具有"記憶"能力&#xff0c;能夠捕捉數據中的時間依賴關系…

#C語言——刷題攻略:牛客編程入門訓練(十):攻克 循環控制(二),輕松拿捏!

&#x1f31f;菜鳥主頁&#xff1a;晨非辰的主頁 &#x1f440;學習專欄&#xff1a;《C語言刷題合集》 &#x1f4aa;學習階段&#xff1a;C語言方向初學者 ?名言欣賞&#xff1a;"代碼行數決定你的下限&#xff0c;算法思維決定你的上限。" 目錄 1. BC82 乘法表…

daily notes[16]

文章目錄意大利語單詞 **“bello”**一、核心含義二、變形規則&#xff1a;最重要的部分1. 當 “bello” 位于 **名詞前面** 時2. 當 “bello” 位于 **名詞后面** 或 **動詞后面** 時三、用法總結與對比四、其他用法和常見表達references意大利語單詞 “bello” 融合了 指示形…

【知識庫】計算機二級python操作題(二)

文章目錄基本操作題1基本操作題2基本操作題3簡單應用題1簡單應用題2綜合應用題1基本操作題1考生文件夾下存在一個文件PY101.py&#xff0c;請寫代碼替換橫線&#xff0c;不修改其他代碼&#xff0c;實現以下功能&#xff0c;隨機選擇一個手機品牌屏幕輸出。 # 請在...處使用一行…

Nginx 服務用戶與防盜鏈配置

目錄 Nginx 服務用戶與防盜鏈配置 1. 隱藏版本號 1.1 配置方法 1.2 生效與驗證 2. 修改當前程序賬號 2.1 操作步驟 3. 緩存時間 3.1 配置方法 3.2 說明 4. 日志分割 4.1 實現方式&#xff08;腳本自動分割&#xff09; 5. 連接超時時間 5.1 核心超時指令&#xff0…

域格4G模塊通信協議之HTTP(三):下載大文件的兩種方式

域格ASR系列模塊支持HTTP下載大文件&#xff0c;本文將提供兩種方式。一、直接通過URC上報數據基礎操作核心指令說明配置說明響應說明應用示例注意點二、HTTP Range分段下載核心指令說明注意點一、直接通過URC上報數據 若文件體積適中&#xff0c;且需要 MCU 即時處理數據&…

Android 圖片 OOM 防護機制設計:大圖加載、內存復用與多級緩存

1. 為什么圖片加載總讓 Android 開發抓狂? 圖片是 Android 應用中不可或缺的元素,從用戶頭像到高清壁紙,從商品詳情頁到動態表情包,圖片無處不在。然而,圖片加載是內存管理的雷區,稍不留神就可能觸發臭名昭著的 OutOfMemoryError(OOM)。為啥圖片這么“吃內存”?原因很…

9月9日

TCP 服務器端#include <myhead.h> #define SER_PORT 8888 //服務器端口號 #define SER_IP "192.168.108.179" //服務器IP地址 int main(int argc, const char *argv[]) {//創建一個用于連接的套接字文件描述符int sfd socket(AF_INET, SOCK_STRE…

Docker生產部署

目錄 一、準備工作&#xff1a;理解 Docker 與 Spring Boot 的關系 1. Docker 是什么&#xff1f; 2. Spring Boot 為什么適合 Docker&#xff1f; 二、編寫Dockerfile 三、配置管理 掛載外部配置文件 四、用 docker-compose 編排多服務 一、準備工作&#xff1a;理解 Do…

ARM 基礎(3)

ARM匯編與C語言函數的相互調用及參數傳遞匯編調用C函數參數傳遞規則 前4個參數通過寄存器 R0-R3 傳遞&#xff0c;超出部分從右向左壓棧。32位返回值存于 R0&#xff0c;64位整數用 R0 和 R1&#xff0c;浮點數通過 S0/D0 返回。示例&#xff1a;ARM匯編調用C函數.global _star…

OpenCV計算機視覺筆記合集

參考課程&#xff1a; 【黑馬程序員 OpenCV入門教程】 [https://www.bilibili.com/video/BV1Fo4y1d7JL] ZZHow(ZZHow1024) 學習路線 基本的圖像處理方法&#xff1a;幾何變換&#xff0c;形態學變換&#xff0c;圖像平滑&#xff0c;直方圖操作&#xff0c;模板匹配&#…

Mybatis-12 第三方緩存-EhCache

配置文檔 Ehcache配置文件ehcache.xml Java Ehcache緩存的timeToIdleSeconds和timeToLiveSeconds區別 基本介紹 1.EhCache是一個純Java的緩存框架&#xff0c;具有快速、精干等特點 2.MyBatis有自己默認的二級緩存&#xff08;前面我們已經使用過了&#xff09;&#xff0c;…

元器件--電容器

文章目錄一、技術理論??1、電容定義??2、定義式??3、單位換算??4、電容作用??5、電容特性二、組成結構??1、極板&#xff08;電極&#xff09;??????2、介質&#xff08;絕緣層&#xff09;????3、引線&#xff08;電極引出端&#xff09;????4、封裝…

【Leetcode hot 100】146.LRU緩存

問題鏈接 146.LRU緩存 問題描述 請你設計并實現一個滿足 LRU (最近最少使用) 緩存 約束的數據結構。 實現 LRUCache 類&#xff1a; LRUCache(int capacity) 以 正整數 作為容量 capacity 初始化 LRU 緩存int get(int key) 如果關鍵字 key 存在于緩存中&#xff0c;則返回關…

MySQL超大數據量查詢與刪除優化

引言 在處理TB級數據時&#xff0c;傳統SQL操作可能導致性能崩潰。本文揭示MySQL超大數據量場景下的核心優化策略&#xff0c;通過生產環境案例展示如何將億級數據刪除耗時從8小時壓縮至8分鐘&#xff0c;并附完整監控方案與容災措施。 深度剖析海量數據操作痛點 1. 傳統刪除操…

【內存管理】常用的頁表映射函數

1、pgd_addr_end 根據當前虛擬地址 addr 和目標結束地址 end&#xff0c;計算當前 PGD 項 能夠覆蓋的最大虛擬地址范圍的結束地址 next。 如果 addr 和 end 跨越多個 PGD 項&#xff08;即 end 超出當前 PGD 項的地址范圍&#xff09;&#xff0c;則返回當前 PGD 項的地址邊界。…