Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

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

Firebase CLI के नवीनतम संस्करण में अपडेट करके सबसे वर्तमान Firebase होस्टिंग सुविधाओं तक पहुंचें।

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

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

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

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

  • होस्टिंग रेस्ट एपीआई का उपयोग करें: projects.sites.create

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

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

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

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

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

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

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

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

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

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

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

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

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

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

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

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

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

  • RESOURCE_IDENTIFIERआपके Firebase प्रोजेक्ट में सूचीबद्ध होस्टिंग साइट के लिए 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 स्थानीय रूप से होस्ट किए गए यूआरएल पर होस्टिंग सामग्री और डिफ़ॉल्ट होस्टिंग साइट की कॉन्फ़िगरेशन का अनुकरण करता है
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
स्थानीय रूप से होस्ट किए गए यूआरएल पर होस्टिंग सामग्री और डिफ़ॉल्ट होस्टिंग साइट की कॉन्फ़िगरेशन की सेवा करता है
(अनुशंसित नहीं; emulators:start )
firebase serve --only hosting: TARGET_NAME
स्थानीय रूप से होस्ट किए गए यूआरएल पर होस्टिंग सामग्री और निर्दिष्ट होस्टिंग साइट की कॉन्फ़िगरेशन की सेवा करता है