Nx NrwlFirebase関数

Nrwlがノードアプリケーションのサポートをリリースして以来、FirebaseFunctionsの同様のサポートを楽しみにしていました。そのためにGitHubで問題を作成しました。これを書いている時点ではまだ開いているので、私は独自のソリューションを作成することにしました。

問題

Firebase Functionsを初期化するfirebase initと、独自のpackage.jsonとでfunctionsサブディレクトリが作成されますnode_modules。それは良くありません。コードを関数と共有し、Nxを使用して管理したいと考えています。

ゴール

  • FirebaseFunctionsはノードアプリとして存在します
  • 1つだけありpackage.json、node_modules
  • 関数はからの共有コードを使用できますlibs

Angularアプリケーションで動作するNrwlプロジェクトがあることを前提としています。また、Firebaseアカウントを持っていて、Firebase関数とは何かを理解していることをお勧めします。

解決

Firebaseを設定する

まだインストールしていない場合は、インストールfirebase-toolsしてログインします。

yarn global add firebase-tools
firebase login

{
  "projects": {
    "default": "your-firebase-project-name"
  }
}

目標で述べたように、関数はに基づいていnode-appます。これを行うには、node-app名前付きの「関数」を作成します。

ng add @nrwl/node # Adds Node capabilities
ng g @nrwl/node:application functions

FirebaseFunctionsの依存関係をインストールする

yarn add firebase firebase-admin firebase-functions

import * as functions from 'firebase-functions';

// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
export const helloWorld = functions.https.onRequest((request, response) => {
  response.send('Hello from Firebase!');
});

理解できるようにFirebase関数を設定するにfirebase.jsonは、ルートディレクトリに作成します。

{
  "functions": {
    "predeploy": [
      "yarn lint functions",
      "yarn build functions --prod"
    ],
    "source": "/"
  }
}

  • sourceプロジェクトのルートを指します。package.jsonルートディレクトリに1つしかないため、そこを指す必要があります。

"main": "dist/apps/functions/main.js",
"engines": {
  "node": "10"
},

  • engineは、どのノードバージョンで実行する必要があるかをFirebaseに通知しています。執筆時点でnode v10は、サポートされている最新のものです。また、Firebaseと競合するため、ここで指定yarnまたはnpmバージョン管理することはできません。

Firebase関数の提供は、通常のノードアプリよりも少し複雑です。この開発依存関係を追加します。

yarn add concurrently -D

"firebase:serve": "concurrently --kill-others \"yarn run build functions --watch\" \"firebase serve --only functions\"",
"firebase:shell": "concurrently --kill-others \"yarn run build functions --watch\" \"firebase functions:shell\" --raw",
"firebase:deploy": "firebase deploy",

  • yarn firebase:shell -関数シェルをローカルで実行します
  • yarn firebase:deploy --only functions -関数のデプロイ

執筆時点ではfirebase serve、distディレクトリからのみ機能を提供しています。それを機能させるために、フラグを使用concurrentlyして「同時に」実行するために使用します。buildwatchserve

概要

これはほとんどそれをカバーしています。FirebaseFunctionsをNxプロジェクトに組み込む簡単でエレガントな方法。このためのソースコードはここにあります。ただし、積極的に開発されているため、このバージョンを確認する場合は、このコミットを確認してください。

提案された投稿

私が最もよく使用するコーディング リソース

私が最もよく使用するコーディング リソース

今週、毎日のメールリストのメンバーからメールを受け取りました。彼らは次のことを知りたかったのです。毎日、毎週、毎月どのリソースにアクセスしていますか? 素晴らしい質問です!私のワークフローと使用している主なリソースについての洞察を共有したいと思います。

Lit ライブラリ シリーズ — 1: lit-html ライブラリの詳細

Lit ライブラリ シリーズ — 1: lit-html ライブラリの詳細

このブログ シリーズの目的は、Lit ライブラリを深く掘り下げ、その独自の機能と市場の他のライブラリやフレームワークとの違いを包括的に理解することです。シリーズは 3 部に分かれており、1 などのトピックを取り上げます。

関連記事

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

新しいキャリアへの転職は、一人でやろうとすると非常に困難になる可能性があります。あなたと同じ学習レベルにあり、同様の目標、粘り強さ、意欲を共有する責任パートナーを見つけることが重要です。

電話番号だけで誰でも追跡 | OSINT調査

電話番号だけで誰でも追跡 | OSINT調査

あなたは、OSINT 調査員、CTF プレーヤー、または単にスパム電話を受けている人である可能性があります。広告で見た番号を確認しようとしている人。

危険な会話

危険な会話

私たちがこの地球上で繁栄し続けたいのであれば、危険な会話をしなければなりません。私たちがこれまでやってきたこと、現在行っていること、そして現在継続して行う予定の(または計画している)ことに挑戦するものです。

緩やかな浸食: 人々がキャリアを無駄に浪費する方法を明らかにする

緩やかな浸食: 人々がキャリアを無駄に浪費する方法を明らかにする

今日のペースが速く競争の激しい世界では、個人の成長、経済的安定、そして人生全体の満足度において、個人のキャリアが重要な役割を果たしています。しかし、多くの人は停滞と不満の絶え間ないサイクルに陥っており、職業生活が徐々に消耗していきます。