Skip to content

PWA

使用 Vite PWA 製作 PWA

PWA

PWA (Progressive Web App) 是一種能讓網站有類似 App 的使用體驗的技術,有離線快取等功能

注意

PWA 有使用限制:

  • 網址必須要有 httpslocalhost
  • 必須要有 manifest.json 檔案,會在 build 時根據設定自動產生
  • 必須要有 Service Worker,會在 build 時根據設定自動產生基本的底

安裝

bash
npm i -D vite-plugin-pwa

素材

產生 PWA 用素材,並放進 /public 資料夾

設定

  • vite.config.js 加入 PWA 設定
    js
    import { VitePWA } from 'vite-plugin-pwa'
    export default defineConfig({
      plugins: [
        VitePWA({
          devOptions: {
            enabled: true,
          },
          // 設定自動更新
          registerType: 'autoUpdate',
          workbox: {
            // 清除過期的快取
            cleanupOutdatedCaches: true,
            // 需要快取檔案的路徑,設定所有檔案
            globPatterns: ['**/*'],
            // 忽略網址參數,不同參數當作相同檔案
            // a.jpg = a.jpg?fbclid=1234
            ignoreURLParametersMatching: [/.*/],
          },
          // https://web.dev/add-manifest/
          manifest: {
            // APP 名稱
            name: 'Name of your app',
            short_name: 'Short name of your app',
            // APP 說明
            description: 'Description of your app',
            // APP 主題顏色
            theme_color: '#ffffff',
            // Android 啟動畫面背景顏色
            background_color: '#ffffff',
             // APP 顯示範圍
            scope: './',
            // APP 開始畫面網址
            start_url: './',
            // 顯示模式
            // browser: 瀏覽器
            // fullscreen: 全螢幕,隱藏所有瀏覽器 UI
            // standalone: 隱藏標準瀏覽器 UI ,如 URL 欄
            // minimal-ui: 有最小導覽列 UI
            // https://web.dev/articles/add-manifest?hl=zh-tw#display
            display: 'standalone',
            // icon 路徑,./ 代表 public
            icons: [
              {
                src: 'android-chrome-192x192.png',
                sizes: '192x192',
                type: 'image/png'
              },
              {
                src: 'android-chrome-512x512.png',
                sizes: '512x512',
                type: 'image/png'
              }
            ]
          }
        })
      ]
    })
  • index.html 中加入 PWA 相關標籤

作業

製作一個番茄鐘,功能包括:

  • 使用者能新增、編輯、刪除待辦事項
  • 能保存已完成、未完成的事項
  • 使用者能選擇響鈴鈴聲
  • 能保存選擇的鈴聲
  • 每工作 25 分鐘,休息 5 分鐘
  • 倒數時間到響鈴
  • 倒數完後能自動開始倒數下一個休息時間或事項
  • 能開始、暫停與跳過倒數
  • 設定 GitHub Actions 自動打包部署
  • 使用 vite-plugin-pwa 設定 PWA
  • 設定社群分享資訊 (og meta 與 twitter meta)