Firebase-tools: unggahan paket firebase.json 'functions.ignore' mengasapi

Dibuat pada 15 Agu 2019  ·  3Komentar  ·  Sumber: firebase/firebase-tools

JANGAN HAPUS validasi_template=true template_path=.github/ISSUE_TEMPLATE/bug_report.md Terima kasih telah berkontribusi pada komunitas Firebase! md5-cd82511516d4d120ac6f38b938897bc8 Ya, kami jelas tidak sempurna! Silakan gunakan template ini dan sertakan repro minimal saat membuka edisi. Jika Anda tahu cara mengatasi masalah tersebut, harap buat Permintaan Tarik, dan kami akan dengan senang hati meninjaunya! md5-d1dc1414712186318d009e8257a27e48 Bagus, kami senang mendengar bagaimana kami dapat meningkatkan produk kami! Namun, jangan gunakan template ini untuk mengirimkan permintaan fitur. Harap kirimkan permintaan fitur Anda ke: https://firebase.google.com/support/contact/bugs-features/ md5-a11e3d9ea91af19a593bf84611224e1a Kami mendapatkan banyak dari itu dan kami senang membantu Anda, tetapi GitHub bukanlah tempat terbaik untuk mereka dan mereka akan ditutup. Silakan lihat panduannya terlebih dahulu: https://firebase.google.com/docs/cli/ Jika dokumentasi resmi tidak membantu, coba tanyakan melalui saluran dukungan resmi kami: https://firebase.google.com/ dukungan/ Lokasi tambahan untuk memeriksa solusi atau bantuan dari komunitas: - Stack Overflow: https://stackoverflow.com/ - Komunitas Firebase Slack: https://firebase.community/ *Harap hindari posting duplikat di beberapa saluran!*

Informasi lingkungan


firebase-tools:

firebase --version
7.2.2


Peron:
Baik lingkungan pengembangan MacOS (10.14.6 (18G87)) & Windows 10.

Kasus cobaan


MCVE: Templat fungsi Firebase + bagian 'functions.ignore' di firebase.json

Langkah-langkah untuk mereproduksi

Buat proyek firebase.

Jalankan fungsi firebase init dengan opsi default, dan tambahkan ke proyek baru Anda:

firebase init functions

Batalkan komentar pada fungsi sampel helloWorld di index.js dan terapkan:

⋊> ~/D/f/functions firebase deploy                                                                                    11:02:38

=== Deploying to 'test-function-deploy-3a957'...

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (22.95 KB) for uploading
✔  functions: functions folder uploaded successfully
i  functions: updating Node.js 8 function helloWorld(us-central1)...
✔  functions[helloWorld(us-central1)]: Successful update operation. 

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/test-function-deploy-3a957/overview
⋊> ~/D/f/functions

Perhatikan ukuran fungsi paket yang diterapkan (22,95KB).

Edit firebase.json untuk memasukkan bagian 'functions.ignore':

{
  "functions": {
    "ignore": []
  }
}

Terapkan lagi:

⋊> ~/D/f/functions firebase deploy                                                                                    11:03:24

=== Deploying to 'test-function-deploy-3a957'...

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (9.07 MB) for uploading
✔  functions: functions folder uploaded successfully
i  functions: updating Node.js 8 function helloWorld(us-central1)...
✔  functions[helloWorld(us-central1)]: Successful update operation. 

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/test-function-deploy-3a957/overview
⋊> ~/D/f/functions 

Perhatikan bahwa paket yang disebarkan telah berkembang dari 22,95 KB menjadi 9,07 MB .

Perilaku yang diharapkan

Saya berharap jika ada yang diabaikan, paket yang digunakan menjadi lebih kecil daripada lebih besar.

Perilaku sebenarnya

Ukuran paket yang disebarkan bertambah beberapa kali lipat dari 22,95KB menjadi 9,07MB.

Sebagai referensi, ukuran folder functions termasuk node_modules lokal dalam hal ini adalah 29MB. Folder node_modules itu sendiri adalah 28,9 MB pada disk, dan ~6 MB di-gzip.

Ini juga memengaruhi proyek TypeScript, mungkin karena masalah dipicu setelah bagian tsc .

Komentar

Saya belum menemukan dokumentasi yang baik/definitif untuk file konfigurasi firebase.json dan khususnya bagian functions . Ada beberapa dokumentasi bagian hosting di sini . Pemahaman saya tentang struktur/penggunaan functions.ignore saat ini didasarkan pada https://github.com/firebase/firebase-tools/issues/291#issuecomment -322526710.

Ada masalah terkait #429 di mana @laurenzlong menunjukkan bahwa bagian ignore harus beroperasi/diperbaiki.

Pertanyaan terbuka

Di mana paket yang disebarkan dibangun secara lokal, sebelum digunakan? Saya berlari dengan --debug dan tidak dapat menemukan jalur file yang berguna.

Terima kasih!

Terima kasih telah mempertimbangkan! Dan paket data tethering ponsel saya terima kasih telah menyelesaikan ini, karena penyebaran proyek saya saat ini ~55MB sebelum saya mengetahui apa yang sedang terjadi :)

Komentar yang paling membantu

Perilaku yang Anda gambarkan adalah perilaku yang saya harapkan.

Dokumentasi tidak menjelaskan functions.ignore , seperti yang Anda tunjukkan; namun, ini digunakan oleh CLI .

Secara tidak resmi (karena _undocumented_), firebase.ignore memiliki default ["node_modules"] . Ini memungkinkan kami membatasi jumlah barang yang harus kami unggah selama penerapan (yang dapat Anda bayangkan bisa menjadi sangat besar, sangat cepat). Dengan menyetel firebase.ignore di package.json , ini memberi tahu CLI bahwa _nothing_ harus diabaikan. Sekarang, folder node_modules disertakan dalam arsip dan dikirim ke Functions.

Untuk menjawab pertanyaan Anda: pada deskripsi proses tingkat tinggi, CLI tidak membuat paket secara lokal. Itu kira-kira sebagai berikut:

  1. Menjalankan skrip pra-penerapan untuk fungsi (juga ditentukan dalam firebase.json ).
  2. Mem-parsing kode sumber untuk fungsi yang akan diterapkan.
  3. Zip kode sumber (biasanya mengabaikan node_modules ) dan mengunggahnya ke Functions.

Setelah kode sumber diunggah, infrastruktur Fungsi menjalankan npm install untuk package.json dan sumber siap untuk digunakan dan melayani pengguna (setidaknya, dalam penjelasan yang sangat cepat ini).

Saya harap itu menjawab pertanyaan Anda. Tetapi karena tidak ada bug terkait CLI di sini, saya akan menutup masalah ini.

Semua 3 komentar

Perilaku yang Anda gambarkan adalah perilaku yang saya harapkan.

Dokumentasi tidak menjelaskan functions.ignore , seperti yang Anda tunjukkan; namun, ini digunakan oleh CLI .

Secara tidak resmi (karena _undocumented_), firebase.ignore memiliki default ["node_modules"] . Ini memungkinkan kami membatasi jumlah barang yang harus kami unggah selama penerapan (yang dapat Anda bayangkan bisa menjadi sangat besar, sangat cepat). Dengan menyetel firebase.ignore di package.json , ini memberi tahu CLI bahwa _nothing_ harus diabaikan. Sekarang, folder node_modules disertakan dalam arsip dan dikirim ke Functions.

Untuk menjawab pertanyaan Anda: pada deskripsi proses tingkat tinggi, CLI tidak membuat paket secara lokal. Itu kira-kira sebagai berikut:

  1. Menjalankan skrip pra-penerapan untuk fungsi (juga ditentukan dalam firebase.json ).
  2. Mem-parsing kode sumber untuk fungsi yang akan diterapkan.
  3. Zip kode sumber (biasanya mengabaikan node_modules ) dan mengunggahnya ke Functions.

Setelah kode sumber diunggah, infrastruktur Fungsi menjalankan npm install untuk package.json dan sumber siap untuk digunakan dan melayani pengguna (setidaknya, dalam penjelasan yang sangat cepat ini).

Saya harap itu menjawab pertanyaan Anda. Tetapi karena tidak ada bug terkait CLI di sini, saya akan menutup masalah ini.

Terima kasih atas infonya @bkendall.

Berdasarkan #291, saya salah mengira bahwa CLI _always_ mengecualikan node_modules, dan bahwa hal-hal di functions.ignore adalah aditif. Menambahkan pola eksplisit untuk node_modules melakukan apa yang Anda gambarkan.

@bkendall Mengapa tidak mendokumentasikannya?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat