この記事は sadnessOjisan Advent Calendar 2021 5 日目の記事です。
「firebase の設定ファイルに何を書いたら良いか分からない」、「firebase.json と .firebaserc ってどっちがどっちだっけ」とよく悩むので、それを解決するライブラリを作りました。
それが firebase-config-type-definition です。
FYI: https://github.com/sadnessOjisan/firebase-config-type-definition
使い方
設定ファイルに型注釈をつけるとどこが間違っているかを教えてくれたり、補完ができるようになります。
import { Firebaserc } from "firebase-config-type-definition";
const json: Firebaserc = {
hosting: [
{
target: "hoge",
public: "packages/lib/hoge",
ignore: ["firebase.json", "**/.*", "**/node_modules/**"],
},
{
target: "fuga",
public: "packages/fuga/public",
ignore: ["firebase.json", "**/.*", "**/node_modules/**"],
},
],
};
現実には設定ファイルは TS ファイルではないので、それをオンラインで簡単に試せるよう CodeSandbox にチェックできる環境を用意しました。
仕組み
.firebaserc に関しては手動で型定義ファイルを書きましたが、 firebase-config.json は本家が JSON Schema を持っているので、そこから生成しました。
FYI: https://github.com/firebase/firebase-tools/blob/master/schema/firebase-config.json
このような schema があるので、あとは quicktype などを通せば TS の定義を生成できるというわけです。