webpack-dev-server+firebase-toolsでローカルのFunctionを呼び出す
この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。
#やりたいこと
Firebase Functions を使った Web アプリケーションをローカルで動かしたい。
ただ、Firebase CLIのfirebase serve
だと Hosting は HMR どころかホットリロードすらされないので webpack-dev-server を使いたい。
#TL;DR
// firebase.json
{
"hosting": {
"rewrites": [{
"source": "/api/foo",
"function": "foo"
}]
}
}
// webpack.config.js
module.exports = {
devServer: {
proxy: {
'/api': 'http://localhost:8081'
}
}
}
firebase serve --port 8081
#何をやっているのか
webpack のdevServer.proxy
を設定して、該当パスへのリクエストをローカルで起動している Firebase Hosting へ流す。
Firebase Hosting は渡ってきたリクエストをrewrites
セクションの設定にしたがって Firebase Functions へ流す。
/api/foo
としているのはエンドポイントを追加した際に/api
以下に生やしていけばwebpack
側にプロキシの設定を追加する必要がなくなるため。
#注意点
あくまでも一部のパスをプロキシしているだけなので、他のリライトルールは適用されない。
そこらへんも全部 Hosting の設定どおりにしたい場合はFirebase CLI の設定と superstatic を使ってリクエストを書き換える必要がある。