1. Repo Settings → Pages → Build and deployment → Github Actions

  2. Create File in Local Project → .github/workflows/deploy.yml

    name: Deploy to 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: Setup Node.js
            uses: actions/setup-node@v4
            with:
              node-version: "20"
              cache: "npm"
    
          - name: Install dependencies
            run: npm ci
    
          - name: Build
            run: npm run build
            env:
              BASE_URL: /${{ github.event.repository.name }}/
              NODE_ENV: production
    
          - name: Setup Pages
            uses: actions/configure-pages@v4
    
          - name: Upload artifact
            uses: actions/upload-pages-artifact@v3
            with:
              path: "./dist/public"
    
      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