कई साइटों पर परियोजना संसाधनों को साझा करें

आप एक ही फायरबेस प्रोजेक्ट में एक या अधिक फायरबेस होस्टिंग साइट सेट कर सकते हैं। चूंकि सभी साइटें एक ही फायरबेस प्रोजेक्ट में हैं, इसलिए सभी साइटें प्रोजेक्ट के अन्य फायरबेस संसाधनों तक पहुंच सकती हैं।

एक ही फायरबेस प्रोजेक्ट के भीतर कई होस्टिंग साइट्स सेट करके, आप संबंधित साइटों और ऐप्स के बीच फायरबेस संसाधनों को अधिक आसानी से साझा कर सकते हैं। उदाहरण के लिए, यदि आप अपने ब्लॉग, एडमिन पैनल और सार्वजनिक ऐप को एक ही फायरबेस प्रोजेक्ट में अलग-अलग साइटों के रूप में सेट करते हैं, तो वे सभी एक ही फायरबेस प्रमाणीकरण उपयोगकर्ता डेटाबेस साझा कर सकते हैं, जबकि उनके पास अपने स्वयं के अद्वितीय डोमेन या सामग्री भी हो सकते हैं।

चरण 1 : अपना फायरबेस सीएलआई संस्करण अपडेट करें

फायरबेस सीएलआई के नवीनतम संस्करण में अपडेट करके नवीनतम फायरबेस होस्टिंग सुविधाओं तक पहुंचें।

चरण 2 : अतिरिक्त साइटें जोड़ें

निम्नलिखित विधियों में से किसी एक का उपयोग करके फायरबेस प्रोजेक्ट में अतिरिक्त साइटें जोड़ें:

  • फायरबेस कंसोल के होस्टिंग पेज में वर्कफ़्लो का उपयोग करें

  • फायरबेस सीएलआई कमांड का उपयोग करें: firebase hosting:sites:create SITE_ID

  • होस्टिंग REST API का उपयोग करें: projects.sites.create

इनमें से प्रत्येक विधि के लिए, आप एक SITE_ID निर्दिष्ट करेंगे जिसका उपयोग साइट के लिए फ़ायरबेस-प्रावधानित डिफ़ॉल्ट उपडोमेन बनाने के लिए किया जाता है:

  • SITE_ID .web.app
  • SITE_ID .firebaseapp.com

चूँकि SITE_ID का उपयोग इन URL के लिए किया जाता है, साइट ID की निम्नलिखित आवश्यकताएँ हैं:

  • एक वैध होस्टनाम लेबल होना चाहिए, जिसका अर्थ है कि इसमें शामिल नहीं हो सकता . , _ , वगैरह।
  • 30 अक्षर या उससे कम होना चाहिए
  • फायरबेस के भीतर विश्व स्तर पर अद्वितीय होना चाहिए

प्रत्येक साइट पर, आप एकाधिक URL पर समान सामग्री और कॉन्फ़िगरेशन परोसने के लिए वैकल्पिक रूप से कस्टम डोमेन भी जोड़ सकते हैं।

एक द्वितीयक साइट हटाएँ

निम्न विधियों में से किसी एक का उपयोग करके फ़ायरबेस प्रोजेक्ट से अवांछित साइटें हटाएं:

  • फायरबेस कंसोल के होस्टिंग पेज में वर्कफ़्लो का उपयोग करें

  • फायरबेस सीएलआई कमांड का उपयोग करें: firebase hosting:sites:delete SITE_ID

  • होस्टिंग REST API का उपयोग करें: projects.sites.delete

ध्यान दें कि आप डिफ़ॉल्ट साइट को नहीं हटा सकते, जिसमें आपके फायरबेस प्रोजेक्ट आईडी के समान SITE_ID है।

चरण 3 : अपनी साइटों के लिए तैनाती लक्ष्य निर्धारित करें

जब आपके पास कई साइटें होती हैं और आप फायरबेस सीएलआई परिनियोजन कमांड चलाते हैं, तो सीएलआई को यह बताने के लिए एक तरीके की आवश्यकता होती है कि प्रत्येक साइट पर कौन सी सेटिंग्स तैनात की जानी चाहिए। तैनाती लक्ष्यों के साथ आप अपनी साइटों पर परीक्षण या तैनाती के लिए अपनी firebase.json कॉन्फ़िगरेशन फ़ाइल और अपने फायरबेस सीएलआई कमांड में TARGET_NAME के ​​साथ विशिष्ट साइट की विशिष्ट पहचान कर सकते हैं।

एक परिनियोजन लक्ष्य बनाने और एक होस्टिंग साइट पर TARGET_NAME लागू करने के लिए, अपनी प्रोजेक्ट निर्देशिका के रूट से निम्नलिखित CLI कमांड चलाएँ:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

पैरामीटर कहां हैं:

  • TARGET_NAME — उस होस्टिंग साइट के लिए एक अद्वितीय नाम (जिसे आपने स्वयं परिभाषित किया है) जिसे आप तैनात कर रहे हैं

  • RESOURCE_IDENTIFIER - आपके फायरबेस प्रोजेक्ट में सूचीबद्ध होस्टिंग साइट के लिए SITE_ID

उदाहरण के लिए, यदि आपने अपने फायरबेस प्रोजेक्ट में दो साइटें ( myapp-blog और myapp-app ) बनाई हैं, तो आप निम्नलिखित कमांड चलाकर प्रत्येक साइट पर एक अद्वितीय TARGET_NAME (क्रमशः blog और app ) लागू कर सकते हैं:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

लक्ष्य परिनियोजन के लिए सेटिंग्स आपके प्रोजेक्ट निर्देशिका में .firebaserc फ़ाइल में संग्रहीत की जाती हैं, इसलिए आपको प्रति प्रोजेक्ट केवल एक बार परिनियोजन लक्ष्य सेट करने की आवश्यकता है।

चरण 4 : प्रत्येक साइट के लिए होस्टिंग कॉन्फ़िगरेशन को परिभाषित करें

जब आप अपनी firebase.json फ़ाइल में किसी साइट के होस्टिंग कॉन्फ़िगरेशन को परिभाषित कर रहे हों तो उसके लागू TARGET_NAME उपयोग करें।

  • यदि आपकी firebase.json फ़ाइल एकाधिक साइटों के लिए कॉन्फ़िगरेशन को परिभाषित करती है, तो एक सरणी प्रारूप का उपयोग करें:

    {
      "hosting": [ {
          "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
          "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"
    
          // ...
        },
        {
          "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
          "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"
    
          // ...
    
          "rewrites": [...]  // You can define specific Hosting configurations for each site
        }
      ]
    }
    
  • यदि आपकी firebase.json फ़ाइल केवल एक साइट के लिए कॉन्फ़िगरेशन को परिभाषित करती है, तो सरणी प्रारूप का उपयोग करना आवश्यक नहीं है:

    {
      "hosting": {
          "target": "blog",
          "public": "dist",
    
          // ...
    
          "rewrites": [...]
      }
    }
    

चरण 5 : स्थानीय स्तर पर परीक्षण करें, परिवर्तनों का पूर्वावलोकन करें और अपनी साइटों पर तैनात करें

अपनी स्थानीय प्रोजेक्ट निर्देशिका के रूट से निम्न में से कोई भी आदेश चलाएँ।

आज्ञा विवरण
firebase emulators:start --only hosting स्थानीय रूप से होस्ट किए गए URL पर होस्टिंग सामग्री और डिफ़ॉल्ट होस्टिंग साइट के कॉन्फ़िगरेशन का अनुकरण करता है
firebase emulators:start --only hosting: TARGET_NAME स्थानीय रूप से होस्ट किए गए URL पर निर्दिष्ट होस्टिंग साइट की होस्टिंग सामग्री और कॉन्फ़िगरेशन का अनुकरण करता है
firebase hosting:channel:deploy \
CHANNEL_ID
पूर्वावलोकन URL पर डिफ़ॉल्ट होस्टिंग साइट की होस्टिंग सामग्री और कॉन्फ़िगरेशन को तैनात करता है
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
पूर्वावलोकन URL पर निर्दिष्ट होस्टिंग साइट की होस्टिंग सामग्री और कॉन्फ़िगरेशन को तैनात करता है
firebase deploy --only hosting firebase.json में कॉन्फ़िगर की गई सभी होस्टिंग साइटों के लाइव चैनल पर होस्टिंग सामग्री और कॉन्फ़िगरेशन को तैनात करता है
firebase deploy --only hosting: TARGET_NAME निर्दिष्ट होस्टिंग साइट के लाइव चैनल पर होस्टिंग सामग्री और कॉन्फ़िगरेशन को तैनात करता है
आज्ञा विवरण
(अनुशंसित नहीं; इसके बजाय emulators:start उपयोग करें)
firebase serve --only hosting
स्थानीय रूप से होस्ट किए गए URL पर होस्टिंग सामग्री और डिफ़ॉल्ट होस्टिंग साइट का कॉन्फ़िगरेशन प्रस्तुत करता है
(अनुशंसित नहीं; इसके बजाय emulators:start उपयोग करें)
firebase serve --only hosting: TARGET_NAME
स्थानीय रूप से होस्ट किए गए URL पर निर्दिष्ट होस्टिंग साइट की होस्टिंग सामग्री और कॉन्फ़िगरेशन परोसता है