Firebase-tools: تحميل حزمة bloats لـ firebase.json 'jobs.ignore'

تم إنشاؤها على ١٥ أغسطس ٢٠١٩  ·  3تعليقات  ·  مصدر: firebase/firebase-tools

لا تحذف 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 بإنشاء حزمة محليًا. يقوم بما يلي تقريبًا:

  1. يقوم بتشغيل أي نص برمجي للنشر المسبق للوظائف (المحددة أيضًا في firebase.json ).
  2. يوزع التعليمات البرمجية المصدر للوظائف لنشرها.
  3. يضغط كود المصدر (عادة ما يتجاهل node_modules ) ويرفعه إلى Functions.

بمجرد تحميل الكود المصدري ، تعمل البنية الأساسية للوظائف على npm install مقابل package.json والمصدر جاهز للذهاب وخدمة المستخدمين (على الأقل ، في هذا التفسير المتموج باليد).

أرجو أن تجيب على الأسئلة الخاصة بك. ولكن نظرًا لعدم وجود خطأ متعلق بـ CLI هنا ، سأغلق هذه المشكلة.

ال 3 كومينتر

السلوك الذي وصفته هو السلوك الذي أتوقعه.

التوثيق لا يصف functions.ignore كما أشرت؛ ومع ذلك ، يتم استخدامه بواسطة CLI .

بشكل غير رسمي (من حيث أنه _ موثق_) ، firebase.ignore لديه القيمة الافتراضية ["node_modules"] . يتيح لنا ذلك تحديد كمية العناصر التي يتعين علينا تحميلها أثناء النشر (والتي يمكنك أن تتخيل أنها قد تصبح كبيرة جدًا وبسرعة كبيرة). من خلال تعيين firebase.ignore في package.json ، فإنه يخبر CLI أنه لا يجب تجاهل أي شيء. الآن ، تم تضمين المجلد node_modules في الأرشيف وإرساله إلى Functions.

للإجابة على سؤالك: في وصف عالي المستوى للعملية ، لا يقوم CLI بإنشاء حزمة محليًا. يقوم بما يلي تقريبًا:

  1. يقوم بتشغيل أي نص برمجي للنشر المسبق للوظائف (المحددة أيضًا في firebase.json ).
  2. يوزع التعليمات البرمجية المصدر للوظائف لنشرها.
  3. يضغط كود المصدر (عادة ما يتجاهل node_modules ) ويرفعه إلى Functions.

بمجرد تحميل الكود المصدري ، تعمل البنية الأساسية للوظائف على npm install مقابل package.json والمصدر جاهز للذهاب وخدمة المستخدمين (على الأقل ، في هذا التفسير المتموج باليد).

أرجو أن تجيب على الأسئلة الخاصة بك. ولكن نظرًا لعدم وجود خطأ متعلق بـ CLI هنا ، سأغلق هذه المشكلة.

شكرا على المعلوماتbkendall.

بناءً على رقم 291 ، اعتقدت خطأً أن CLI _ دائمًا_ مستبعدة node_modules ، وأن العناصر الموجودة في functions.ignore كانت مضافة. إضافة نمط صريح للوحدات node_modules يفعل ما تصفه.

bkendall لماذا لا توثقها؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات