Writer: tokuyasu 更新日:2023/09/27
PWAとは
アイコンをホーム画面に追加することや、
ユーザーにプッシュ通知を送ることも可能な技術。
viteプロジェクトを作成
1 2 3 4 5 6 7 |
//npmの場合 $ npm create vite@latest //yarnの場合 $ yarn create vite |
select a framework : 「Reactを選択」
Select a variant: 「JavaScript」で作成した。
作成後に、下記コマンド実行。
1 2 3 4 5 6 7 |
cd my-app //npmの場合 yarnの場合 npm install yarn install //npmの場合 yarnの場合 npm run dev yarn dev |
PWA化の手順
1.プラグインをインストール
1 2 3 4 5 |
//npmの場合 npm install -D vite-plugin-pwa //yarnの場合 yarn add -D vite-plugin-pwa |
2.vita.config.js
下記記述はPWA化する際に最低限必要なものなので記述。
マニュフェスト部分の内容についての詳細は下記に記述。
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 |
import { defineConfig } from 'vite' import { VitePWA } from 'vite-plugin-pwa' import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react(), VitePWA({ registerType: 'autoUpdate', devOptions: { enabled: true } manifest: { name: "My App", short_name: "My App", description: "My App", icons: [ { src: "app_icon/icon-192.png", type: "image/png", sizes: "192x192" }, { src: "app_icon/icon-512.png", sizes: "512x512", type: "image/png" }, { src: "app_icon/icon-512.png", sizes: "512x512", type: "image/png", purpose: "any maskable" } ], start_url: "index.html", display: "standalone", background_color: "#ffffff", theme_color: "#000000", lang: "ja" } }) ], }) |
-- devOptions --
devOptions の enabled を true にすると、
開発環境で Service Worker の動きを確認できるようになる。
アイコンを正しく設定して一度ビルドしてから
preview コマンドを実行 (yarn preview など) すると、
開発サーバが起動してブラウザが PWA と認識する。
-- manifest --
*short_name / name
*shart_url
ホーム画面に追加したアイコンを、
タップしてアプリケーションを起動した際に、
最初に表示する画面を指定。
何も設定していない場合には、
ユーザーが「ホーム画面に追加」した際に
表示していた画面が表示される。
*background_color
スプラッシュ画面の背景色を指定
*theme_color
*display
ホーム画面から起動した際のUIを指定。
fullscreen, standalone, minimal-ui, browserの
いずれかを設定する。
・fullscreen : 利用可能な画面の領域をすべて使用。
クロームは表示されなくなる。
※クローム (chrome) はブラウザーの中で、
ウェブページ自体を除いた見える部分すべて
(ツールバー、メニューバー、タブなど)
・minimal-ui : アプリケーションの外見は、
単独のアプリケーションのようになるが、
ナビゲーションを制御するため最小限の UI 要素が表示される。
要素はブラウザーによって異なる。
・standalone:ネイティブアプリケーションのような表示
・browser:ブラウザで表示した際と同じUI
*orientation
*icons
3.robots.txt
1 2 |
User-agent: * Allow: / |
4.index.html
ファビコン、アイコン画像、ディスクリプション、アプリ名など記述する。
マスクブルアイコン用の画像も記述する。
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 |
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Vite + React</title> <!-- 下記追加部分 --> <title>Test App</title> <meta name="description" content="JSONを読むためのビュアーです" /> <link rel="icon" href="public/app_icon/favicon.ico" /> <link rel="apple-touch-icon" href="public/app_icon/apple-touch-icon.png" sizes="180x180" /> <link rel="mask-icon" href="public/app_icon/mask-icon.svg" color="#FFFFFF" /> <meta name="theme-color" content="#916028" /> </head> <body> <div id="root"></div> <script type="module" src="/src/main.jsx"></script> </body> </html> |
1 2 3 |
npm run build npm preview |