做法
首先,修改 next.config.js 檔,將 basePath 設置為以專案名稱為名的資料夾路徑。
1 2 3 4 5 6 7 8 9 10
   |  const nextConfig = {   reactStrictMode: true,   images: {     unoptimized: true,   },   basePath: process.env.NODE_ENV === 'production' ? '/<REPO_NAME>' : '', };
  module.exports = nextConfig;
 
  | 
 
部署
接著,到 GitHub 的專案頁面,點選「Settings」頁籤,點選「Pages」選單,將「Source」設置為「GitHub Actions」。
然後,在專案的 .github/workflows 資料夾新增 gh-pages.yaml 檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
   | name: GitHub Pages
  on:   push:     branches:       - main   workflow_dispatch:
  permissions:   contents: read   pages: write   id-token: write
  concurrency:   group: "pages"   cancel-in-progress: false
  jobs:   build:     runs-on: ubuntu-latest     steps:       - name: Checkout         uses: actions/checkout@v4       - name: Detect package manager         id: detect-package-manager         run: |           if [ -f "${{ github.workspace }}/yarn.lock" ]; then             echo "manager=yarn" >> $GITHUB_OUTPUT             echo "command=install" >> $GITHUB_OUTPUT             echo "runner=yarn" >> $GITHUB_OUTPUT             exit 0           elif [ -f "${{ github.workspace }}/package.json" ]; then             echo "manager=npm" >> $GITHUB_OUTPUT             echo "command=ci" >> $GITHUB_OUTPUT             echo "runner=npx --no-install" >> $GITHUB_OUTPUT             exit 0           else             echo "Unable to determine package manager"             exit 1           fi       - name: Setup Node         uses: actions/setup-node@v4         with:           node-version: "20"           cache: ${{ steps.detect-package-manager.outputs.manager }}       - name: Setup Pages         uses: actions/configure-pages@v5         with:           static_site_generator: next       - name: Restore cache         uses: actions/cache@v4         with:           path: |             .next/cache           key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}           restore-keys: |             ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-       - name: Install dependencies         run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}       - name: Build with Next.js         run: |           ${{ steps.detect-package-manager.outputs.runner }} npm run build       - name: Upload artifact         uses: actions/upload-pages-artifact@v3         with:           path: ./out   deploy:     environment:       name: github-pages       url: ${{ steps.deployment.outputs.page_url }}     runs-on: ubuntu-latest     needs: build     steps:       - name: Deploy to GitHub Pages         id: deployment         uses: actions/deploy-pages@v4
   | 
 
推送程式碼。
1 2 3
   | git add . git commit -m "Add deploy script" git push
   | 
 
完成後,即可瀏覽網頁。