vue-cli + firebaseでdeploy後に自動reloadさせる

投稿者:

概要

以下のように実装します

・firestoreにデプロイした時刻を保存

・frontはその時刻が変わったらリロードする

デプロイした時刻を保存するスクリプトを作成

このようなスクリプトを作成する

post-deploy.js と名付けよう!

const firebase = require("firebase");
require("firebase/firestore");

const firebaseConfig = {}; // your config!
firebase.initializeApp(firebaseConfig);

// main
(async function () {
  const db = firebase.firestore();
  const infoRef = db.collection("app").doc("info");
  const now = new Date();
  infoRef.set({released_time: +new Date()});
})();

firebase.jsonに先程のスクリプトを実行させるための記述する

↓こんなふうにしよう

    "postdeploy": "node deploy/post-deploy.js"

main.jsにこのブロックを追加しよう

(async function() {
  const infoRef = db.collection("app").doc("info");
  const info = await infoRef.get();
  if (!info.exists) {
    return;
  }
  const releasedTime = info.data().released_time;
  infoRef.onSnapshot(snapshot => {
    const newReleasedTime = snapshot.data().released_time;
    if (releasedTime !== newReleasedTime) {
      location.reload();
    }
  });
})();

おわり

これでデプロイ後にリロードされるようになる。はずだぜ!

babu
babu

何かあっても責任は取りません!