ParcelでPWA化する最速の方法

この記事はQiitaに書いていた自身の記事のコピーです。

PWAに必要なもの、こと(最低限)は以下の通り。

  • PWA化するWebサイト、Webアプリケーション
  • service-worker設定ファイル(js)
  • manifest設定ファイル(json)
  • それらをHTMLファイルから参照するlinkタグの追記

目次

最速の方法

1. parcel-plugin-sw-precacheの導入

1
2
npm i -D parcel-plugin-sw-precache
# =yarn add -D parcel-plugin-sw-precache

parcel-plugin-sw-precacheは、service-worker設定ファイルとHTMLからのリンクをいいカンジに生成してくれるプラグインです。
一応細かい設定もできますが、基本的にはこれを入れてParcelを動かすだけで大丈夫です。

2. manifest.webmanifestの作成

GoogleによるManifest Documentでは、manifest.jsonというファイル名での記述を指定していますが、このファイル名ではParcelがファイル名を改変してしまい、上手く動作しません。

そこで、MDNが指定しているmanifest.webmanifestというファイル名で記述し、

1
<link rel="manifest" href="/manifest.webmanifest">

のようにHTMLファイルから参照します。こちらは手動です。

manifest.webmanifestの中身はmanifest.jsonと同じです。MDNによるドキュメントに記載されている例をコピペしていじればすぐに作成できます。

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
{
"name": "HackerWeb",
"short_name": "HackerWeb",
"start_url": ".",
"display": "standalone",
"background_color": "#fff",
"description": "A simply readable Hacker News app.",
"icons": [{
"src": "images/touch/homescreen48.png",
"sizes": "48x48",
"type": "image/png"
}, {
"src": "images/touch/homescreen72.png",
"sizes": "72x72",
"type": "image/png"
}, {
"src": "images/touch/homescreen96.png",
"sizes": "96x96",
"type": "image/png"
}, {
"src": "images/touch/homescreen144.png",
"sizes": "144x144",
"type": "image/png"
}, {
"src": "images/touch/homescreen168.png",
"sizes": "168x168",
"type": "image/png"
}, {
"src": "images/touch/homescreen192.png",
"sizes": "192x192",
"type": "image/png"
}],
"related_applications": [{
"platform": "play",
"url": "https://play.google.com/store/apps/details?id=cheeaun.hackerweb"
}]
}

以上です。

この記事を書いた理由は主に2つあります。

  • parcel-plugin-sw-precacheを初めて知ったため
  • manifest.jsonでハマったため

もし、これらより簡単な方法があればぜひ教えてください。
では。