Firebaseのつかいかた

# はじめに

Firebaseの使い方の記事がいくつかあるが、バージョンが変わったせいか振る舞いが違っている・・・。
ので改めて使い方をまとめる。

# インストール

```bash
$ npm install --global firebase-tools
```

# ログイン

```bash
$ firebase login
? Allow Firebase to collect anonymous CLI usage and error reporting information? No

Visit this URL on any device to log in:
https://accounts.google.com/xxx
Waiting for authentication...

✔  Success! Logged in as xxxx@gmail.com
```

# ローカル・プロジェクト新規作成

```bash
$ firebase init

     ######## #### ########  ######## ########     ###     ######  ########
     ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##
     ######    ##  ########  ######   ########  #########  ######  ######
     ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##
     ##       #### ##     ## ######## ########  ##     ##  ######  ########

You're about to initialize a Firebase project in this directory:

  path/firebase/prject_name

Before we get started, keep in mind:

  * You are currently outside your home directory

? Which Firebase CLI features do you want to setup for this folder? Press Space to select features, then Enter to confirm your choices. Functions: Configure and deploy 
Cloud Functions

=== Project Setup

First, let's associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add, 
but for now we'll just set up a default project.

? Select a default Firebase project for this directory: [create a new project]

=== Functions Setup

A functions directory will be created in your project with a Node.js
package pre-configured. Functions can be deployed with firebase deploy.

? What language would you like to use to write Cloud Functions? JavaScript
? Do you want to use ESLint to catch probable bugs and enforce style? No
✔  Wrote functions/package.json
✔  Wrote functions/index.js
✔  Wrote functions/.gitignore
? Do you want to install dependencies with npm now? Yes

> grpc@1.19.0 install path/firebase/project_name/functions/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp WARN Using request for node-pre-gyp https download 
[grpc] Success: "path/firebase/project_name/functions/node_modules/grpc/src/node/extension_binary/node-v67-linux-x64-glibc/grpc_node.node" is installed via remote

> protobufjs@6.8.8 postinstall path/firebase/project_name/functions/node_modules/protobufjs
> node scripts/postinstall


> firebase-functions@2.2.0 postinstall path/firebase/project_name/functions/node_modules/firebase-functions
> node ./upgrade-warning


======== WARNING! ========

This upgrade of firebase-functions contains breaking changes if you are upgrading from a version below v1.0.0.

To see a complete list of these breaking changes, please go to:

https://firebase.google.com/docs/functions/beta-v1-diff

npm notice created a lockfile as package-lock.json. You should commit this file.
added 352 packages from 265 contributors and audited 1097 packages in 7.463s
found 0 vulnerabilities


i  Writing configuration info to firebase.json...
i  Writing project information to .firebaserc...
i  Writing gitignore file to .gitignore...

✔  Firebase initialization complete!

Project creation is only available from the Firebase Console
Please visit https://console.firebase.google.com to create a new project, then run firebase use --add
```

# クラウド・プロジェクト作成

ウェブサイト上でプロジェクトを追加する。

https://console.firebase.google.com

# ローカル・プロジェクトにクラウド・プロジェクトを設定

```bash
$ firebase use --add
? Which project do you want to add? project_name
? What alias do you want to use for this project? (e.g. staging) project_name_alias

Created alias project_name_alias for project_name.
Now using alias project_name_alias (project_name)
```

# デバッグ

```bash
$ sudo firebase serve --only functions
```