Open sakelog opened 3 years ago
next-pwaを使用する
https://github.com/shadowwalker/next-pwa
インストールは下記コマンドを実行
yarn add next-pwa
Next.js のバージョンが9以上だと、service workerのファイルは自動で作成してくれる。
自動で作成するには、next.config.js
でwithPWA
を指定する。
const withPWA = require('next-pwa')
module.exports = withPWA({
pwa: {
dest: 'public'
}
})
publicフォルダにservice worker関連のフォルダが作成される。
public
|-- sw.js
|-- sw.js.map
|-- workbox-hogehoge.js
`-- workbox.hogehoge.js.map
gitignoreに下記を追加しておく。
# PWA
public/sw.js*
public/workbox-*
Github Pagesはhttps://ユーザー名.github.io/リポジトリ名/
の構成になっているので、そのままではうまく動かない。
サブドメイン設定を有効にする。
next.config.js
を下記のように記載する。
require('dotenv').config();
const withPWA = require('next-pwa');
module.exports = withPWA({
pwa: {
dest: 'public',
subdomainPrefix: process.env.GITHUB_PAGES
? process.env.REPOSITORY_NAME
: '',
},
basePath: process.env.GITHUB_PAGES ? process.env.REPOSITORY_NAME : '',
});
subdomainPrefix
がサブドメインを有効にするかの設定。
https://qiita.com/ozaki25/items/fe9912fc41c3a5c5bfea を参考に、GithubPagesのときだけ、GITHUB_PAGES
の環境変数を渡している。ついでREPOSITORY_NAME
も渡す。
GithubActions固有のGITHUB_REPOSITORY
環境変数を使えばもう少しスマートにできそうだけどうまくできなかったので、今後見直す。