Nx Nrwl Firebase Functions

Sejak Nrwl merilis dukungannya untuk aplikasi node, saya menantikan dukungan serupa untuk Fungsi Firebase. Saya bahkan telah membuat masalah di GitHub untuk itu. Pada saat penulisan ini masih terbuka, itulah mengapa saya memutuskan untuk membuat solusi saya sendiri.

Masalah

Saat Anda menginisialisasi Firebase Functions dengannya, firebase inititu membuat subdirektori fungsi dengan miliknya sendiri package.jsondan node_modules. Itu tidak baik. Kami ingin berbagi kode dengan fungsi dan mengelolanya menggunakan Nx.

Tujuan

  • Fungsi Firebase ada sebagai aplikasi node
  • Hanya ada satu package.jsondannode_modules
  • Fungsi dapat menggunakan kode bersama darilibs

Kami menganggap Anda memiliki Proyek Nrwl yang berfungsi dengan aplikasi Angular. Anda juga disarankan untuk memiliki akun Firebase dan memahami apa itu Fungsi Firebase.

Larutan

Siapkan Firebase

Jika Anda belum melakukannya, instal firebase-toolsdan login:

yarn global add firebase-tools
firebase login

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

Seperti yang dinyatakan dalam tujuan, Fungsi harus didasarkan node-app. Untuk melakukannya, buat dengan node-appnama "fungsi":

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

Instal dependensi Firebase Functions

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!');
});

Untuk menyiapkan Fungsi Firebase agar dapat dipahami, buat firebase.jsondi direktori root:

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

  • sourcemenunjuk ke akar proyek. Karena kami hanya memiliki satu package.jsondan itu ada di direktori root, itu perlu diarahkan ke sana.

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

  • enginememberi tahu Firebase tentang versi node mana yang harus dijalankan. Pada saat penulisan node v10adalah yang terbaru yang didukung. Anda juga TIDAK BISA menentukan versi yarnatau npmversi di sini karena akan bertentangan dengan firebase.

Melayani Fungsi Firebase sedikit lebih rumit daripada aplikasi node pada umumnya. Tambahkan ketergantungan dev ini:

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 - menjalankan fungsi shell secara lokal
  • yarn firebase:deploy --only functions - menerapkan fungsi

Pada saat penulisan firebase serveberfungsi hanya dari distdirektori. Untuk membuatnya bekerja, kami menggunakan concurrentlyuntuk menjalankan builddengan watchflag, dan serve"secara bersamaan".

Ringkasan

Ini cukup banyak mencakupnya. Cara mudah dan elegan untuk menggabungkan Fungsi Firebase ke dalam proyek Nx. Kode sumber untuk ini dapat ditemukan di sini . Namun itu dikembangkan secara aktif jadi jika Anda ingin meninjau versi INI, periksa komit ini .

Suggested posts

Sumber daya pengkodean saya yang paling sering digunakan

Sumber daya pengkodean saya yang paling sering digunakan

Minggu ini, saya menerima email dari anggota daftar email harian. Mereka ingin tahu: Sumber daya apa yang Anda kunjungi setiap hari, setiap minggu, dan setiap bulan? Pertanyaan bagus! Saya senang untuk mencoba membagikan beberapa wawasan tentang alur kerja saya & sumber daya teratas yang saya gunakan.

Seri pustaka lit — 1: Mendalami Pustaka lit-html

Seri pustaka lit — 1: Mendalami Pustaka lit-html

Tujuan dari rangkaian blog ini adalah untuk mendalami library Lit dan mendapatkan pemahaman komprehensif tentang fitur uniknya dan bagaimana Lit membedakan dirinya dari library dan framework lain di pasar. Serial ini dibagi menjadi tiga bagian, mencakup topik-topik seperti 1.

Related posts

Apa yang membuat podcast berpengaruh?

Apa yang membuat podcast berpengaruh?

Minggu lalu saya melihat siaran pers, dikirim melalui PressGazette (situs web berita media Inggris). Artikel tersebut mengumumkan bahwa Acast, perusahaan hosting dan periklanan podcast Scandi, akan memimpin konsorsium penerbit "mungkin yang paling berpengaruh" dalam podcasting.

HIDUP TANPA BATAS

Ketika Anda tumbuh dewasa, Anda cenderung diberi tahu bahwa dunia adalah apa adanya dan hidup Anda hanya untuk menjalani hidup Anda di dunia, tidak pernah mempertaruhkan hidup Anda, ikuti saja jalan yang ditetapkan dan pada akhirnya mati, dan cobalah untuk tidak melakukannya. hancurkan tembok terlalu banyak. Tapi itu kehidupan yang sangat terbatas.

"The Mariana Trench Unveiled: Menyingkap Kebenaran Tersembunyi yang Mengerikan dari Abyss"

"The Mariana Trench Unveiled: Menyingkap Kebenaran Tersembunyi yang Mengerikan dari Abyss"

Pendahuluan:Selamat datang, para pembaca yang pemberani, dalam sebuah perjalanan yang akan membawa kita ke kedalaman tergelap planet kita. Di blog ini, kami menyelidiki dunia penuh teka-teki Palung Mariana, mengungkap rahasianya yang tersembunyi dan mengungkap kebenaran mengerikan yang ada di bawah permukaannya.

Apa yang dapat Anda lakukan di musim menunggu (menunggu untuk mendapatkan pekerjaan pertama Anda di bidang teknologi)

Apa yang dapat Anda lakukan di musim menunggu (menunggu untuk mendapatkan pekerjaan pertama Anda di bidang teknologi)

Beralih ke karir baru bisa sangat menantang jika Anda mencoba melakukannya sendiri. Penting untuk menemukan mitra akuntabilitas yang memiliki tingkat pembelajaran yang sama dengan Anda, yang memiliki tujuan, keuletan, dan dorongan yang sama.