لا تحذف Validate_template = true template_path = .github / ISSUE_TEMPLATE / bug_report.md شكرًا لك على المساهمة في مجتمع Firebase! md5-cd82511516d4d120ac6f38b938897bc8 نعم ، نحن بالتأكيد لسنا مثاليين! الرجاء استخدام هذا النموذج وتضمين الحد الأدنى من إعادة المحاولة عند فتح المشكلة. إذا كنت تعرف كيفية حل المشكلة ، فيرجى إنشاء طلب سحب ، ويسعدنا مراجعته! md5-d1dc1414712186318d009e8257a27e48 رائع ، نحن نحب أن نسمع كيف يمكننا تحسين منتجاتنا! ومع ذلك ، لا تستخدم هذا النموذج لإرسال طلب ميزة. يرجى إرسال طلبات الميزات الخاصة بك إلى: https://firebase.google.com/support/contact/bugs-features/ md5-a11e3d9ea91af19a593bf84612124e1a نحصل على الكثير منهم ونحب مساعدتك ، لكن GitHub ليس أفضل مكان لهم وهم سوف يغلق. يرجى إلقاء نظرة على الدليل أولاً: https://firebase.google.com/docs/cli/ إذا لم تساعد الوثائق الرسمية ، فحاول السؤال من خلال قناة الدعم الرسمية الخاصة بنا: https://firebase.google.com/ الدعم / مواقع إضافية للبحث عن حلول أو مساعدة من المجتمع: - Stack Overflow: https://stackoverflow.com/ - مجتمع Firebase Slack: https://firebase.community/ * يُرجى تجنب النشر المكرر عبر قنوات متعددة! *
أدوات Firebase:
firebase --version
7.2.2
برنامج:
كل من بيئات تطوير MacOS (10.14.6 (18G87)) و Windows 10.
MCVE: قالب وظائف Firebase + قسم "jobs.ignore" في firebase.json
إنشاء مشروع Firebase.
شغّل وظائف initbase بالخيارات الافتراضية ، وأضفها إلى مشروعك الجديد:
firebase init functions
قم بإلغاء التعليق على دالة نموذج helloWorld في index.js
ونشر:
⋊> ~/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
لاحظ حجم حزم الوظائف المنشورة (22.95 كيلو بايت).
قم بتحرير firebase.json
لتضمين قسم "function.ignore":
{
"functions": {
"ignore": []
}
}
نشر مرة أخرى:
⋊> ~/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
لاحظ أن الحزمة التي تم نشرها قد نمت من 22.95 كيلو بايت إلى 9.07 ميجا بايت .
أتوقع أنه إذا تم تجاهل الأشياء ، فإن الحزمة المنشورة تصبح أصغر وليس أكبر.
يزداد حجم الحزمة المنشورة بعدة أوامر من حيث الحجم من 22.95 كيلو بايت إلى 9.07 ميجا بايت.
كمرجع ، حجم المجلد functions
بما في ذلك node_modules
المحلي هو 29 ميغا بايت في هذه الحالة. حجم المجلد node_modules
هو 28.9 ميجا بايت على القرص ، ويتم ضغطه بـ 6 ميجا بايت gzip.
يؤثر هذا أيضًا على مشاريع TypeScript ، على الأرجح بسبب ظهور المشكلة بعد الجزء tsc
من الأشياء.
لم أجد حتى الآن أي وثائق جيدة / نهائية لملف التكوين firebase.json
وبالتحديد قسم functions
. توجد بعض الوثائق الخاصة بقسم hosting
هنا . يعتمد فهمي لهيكل / استخدام functions.ignore
حاليًا على https://github.com/firebase/firebase-tools/issues/291#issuecomment -322526710.
هناك مشكلة ذات صلة # 429 حيث يشير laurenzlong إلى أن قسم ignore
يجب أن يكون جاهزًا / ثابتًا.
أين يتم إنشاء الحزمة المنشورة محليًا قبل النشر؟ ركضت مع --debug ولم أستطع معرفة أي مسارات ملفات مفيدة.
شكرا للنظر! وتشكرك خطة بيانات ربط الهاتف الخاصة بي على حل هذه المشكلة ، حيث يبلغ حجم نشر مشروعي الحالي حوالي 55 ميغا بايت قبل أن أكتشف ما كان يجري :)
السلوك الذي وصفته هو السلوك الذي أتوقعه.
التوثيق لا يصف functions.ignore
كما أشرت؛ ومع ذلك ، يتم استخدامه بواسطة CLI .
بشكل غير رسمي (من حيث أنه _ موثق_) ، firebase.ignore
لديه القيمة الافتراضية ["node_modules"]
. يتيح لنا ذلك تحديد كمية العناصر التي يتعين علينا تحميلها أثناء النشر (والتي يمكنك أن تتخيل أنها قد تصبح كبيرة جدًا وبسرعة كبيرة). من خلال تعيين firebase.ignore
في package.json
، فإنه يخبر CLI أنه لا يجب تجاهل أي شيء. الآن ، تم تضمين المجلد node_modules
في الأرشيف وإرساله إلى Functions.
للإجابة على سؤالك: في وصف عالي المستوى للعملية ، لا يقوم CLI بإنشاء حزمة محليًا. يقوم بما يلي تقريبًا:
firebase.json
).node_modules
) ويرفعه إلى Functions.بمجرد تحميل الكود المصدري ، تعمل البنية الأساسية للوظائف على npm install
مقابل package.json
والمصدر جاهز للذهاب وخدمة المستخدمين (على الأقل ، في هذا التفسير المتموج باليد).
أرجو أن تجيب على الأسئلة الخاصة بك. ولكن نظرًا لعدم وجود خطأ متعلق بـ CLI هنا ، سأغلق هذه المشكلة.
شكرا على المعلوماتbkendall.
بناءً على رقم 291 ، اعتقدت خطأً أن CLI _ دائمًا_ مستبعدة node_modules ، وأن العناصر الموجودة في functions.ignore
كانت مضافة. إضافة نمط صريح للوحدات node_modules يفعل ما تصفه.
bkendall لماذا لا توثقها؟
التعليق الأكثر فائدة
السلوك الذي وصفته هو السلوك الذي أتوقعه.
التوثيق لا يصف
functions.ignore
كما أشرت؛ ومع ذلك ، يتم استخدامه بواسطة CLI .بشكل غير رسمي (من حيث أنه _ موثق_) ،
firebase.ignore
لديه القيمة الافتراضية["node_modules"]
. يتيح لنا ذلك تحديد كمية العناصر التي يتعين علينا تحميلها أثناء النشر (والتي يمكنك أن تتخيل أنها قد تصبح كبيرة جدًا وبسرعة كبيرة). من خلال تعيينfirebase.ignore
فيpackage.json
، فإنه يخبر CLI أنه لا يجب تجاهل أي شيء. الآن ، تم تضمين المجلدnode_modules
في الأرشيف وإرساله إلى Functions.للإجابة على سؤالك: في وصف عالي المستوى للعملية ، لا يقوم CLI بإنشاء حزمة محليًا. يقوم بما يلي تقريبًا:
firebase.json
).node_modules
) ويرفعه إلى Functions.بمجرد تحميل الكود المصدري ، تعمل البنية الأساسية للوظائف على
npm install
مقابلpackage.json
والمصدر جاهز للذهاب وخدمة المستخدمين (على الأقل ، في هذا التفسير المتموج باليد).أرجو أن تجيب على الأسئلة الخاصة بك. ولكن نظرًا لعدم وجود خطأ متعلق بـ CLI هنا ، سأغلق هذه المشكلة.