RealtimeDatabaseのデータをmigrationとかでいじりたいときあるっすよね。
想定してないデータができないようにルールを使うと思うんですが、
自分はtypescriptでルール通りに型をつくってデータを作成するようにすると安心できるので気に入ってます。
typescriptのコンパイルでwebpackを使ったんですが構成は下記みたいな感じ↓
https://github.com/chucker34/firebase_admin_pack
ちょっと詰まったところはwebpack.config.jsのresolve.mainFields
でmain
を優先するようにしないとTypeError: rtdb.initStandalone is not a function
と怒られたこと。
俺たちのstackoverflowで同じように困っている人がいましたよと。
https://stackoverflow.com/questions/48266195/typeerror-rtdb-initstandalone-is-not-a-function
target: node
にしてもブラウザ向けのファイルが使われていたのが原因。webpackだから普通そうなるけどね。
// webpack.config.js
const Dotenv = require('dotenv-webpack');
module.exports = {
target: 'node',
mode: 'development',
entry: './src/main.ts',
output: {
path: `${__dirname}/dist`,
filename: 'main.js'
},
module: {
rules: [
{
test: /\.ts$/,
use: 'ts-loader'
}
]
},
resolve: {
extensions: [ '.ts', '.js', '.json' ],
mainFields: ['main', 'module']
},
plugins: [
new Dotenv()
]
};