Workflow - Deploy a website (Vite + Vue3) to Github Pages
Guide
配置 - 基本
vite.config.js
export default defineConfig({
base: '/{repo name}}/',
});
配置 - SPA
如果是單頁應用(SPA)路由需做以下配置。
vite.config.ts
import { defineConfig } from 'vite';
export default defineConfig({
base: '/你的倉庫名稱/', // 替換為你的 GitHub 倉庫名稱
});
index.html
<!DOCTYPE html>
<html lang="">
<head>
<base href="/mgproject-track-logic-game/">
</head>
</html>
Vue Router
import { createRouter, createWebHistory } from 'vue-router';
const router = createRouter({
history: createWebHistory('/你的倉庫名稱/'),
});
本地測試
pnpm build
pnpm preview
部屬
方式 1 - 使用 gh-pages
套件
安裝套件
pnpm add -D gh-pages
於 package.json 編寫命令
{
"scripts": {
"deploy2ghpages": "gh-pages -d dist"
},
}
執行命令
pnpm deploy2ghpages
方式 2 - 使用 github actions
編寫 .github\workflows\gh-pages.yml
# 將靜態內容部署到 GitHub Pages 的簡易工作流程
name: Deploy static content to Pages
on:
# 僅在推送到默認分支時運行。
push:
branches: ['main']
# 這個選項可以使你手動在 Action tab 頁面觸發工作流
workflow_dispatch:
# 設置 GITHUB_TOKEN 的權限,以允許部署到 GitHub Pages。
permissions:
contents: read
pages: write
id-token: write
# 允許一個併發的部署
concurrency:
group: 'pages'
cancel-in-progress: true
jobs:
# 單次部署的工作描述
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload dist folder
path: './dist'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4