कई साइटों पर प्रोजेक्ट के संसाधन शेयर करना

एक Firebase प्रोजेक्ट में एक या उससे ज़्यादा Firebase Hosting साइटें सेट अप की जा सकती हैं. सभी साइटें एक ही Firebase प्रोजेक्ट में हैं. इसलिए, सभी साइटें प्रोजेक्ट के अन्य Firebase संसाधनों को ऐक्सेस कर सकती हैं.

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

पहला चरण: Firebase सीएलआई वर्शन को अपडेट करना

Firebase सीएलआई के नए वर्शन पर अपडेट करके, Firebase Hosting की नई सुविधाएं ऐक्सेस करें.

दूसरा चरण: अन्य साइटें जोड़ना

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

  • Firebase कंसोल के Hosting पेज में मौजूद वर्कफ़्लो का इस्तेमाल करें

  • Firebase सीएलआई कमांड का इस्तेमाल करें: firebase hosting:sites:create SITE_ID

  • Hosting REST API का इस्तेमाल करें: projects.sites.create

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

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

इन यूआरएल के लिए SITE_ID का इस्तेमाल किया जाता है. इसलिए, साइट आईडी के लिए ये ज़रूरी शर्तें पूरी करना ज़रूरी है:

  • यह एक मान्य होस्टनेम लेबल होना चाहिए. इसका मतलब है कि इसमें ., _ वगैरह नहीं हो सकते.
  • इसमें 30 या इससे कम वर्ण होने चाहिए
  • Firebase में यह आईडी ग्लोबल लेवल पर यूनीक होना चाहिए

हर साइट के लिए, कस्टम डोमेन जोड़े जा सकते हैं. इससे एक ही कॉन्टेंट और कॉन्फ़िगरेशन को कई यूआरएल पर दिखाया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.

अपने डेटाबेस इंस्टेंस पर कोई असर डाले बिना इन्हें मिटाया जा सकता है.

सेकंडरी साइट मिटाना

इनमें से किसी एक तरीके का इस्तेमाल करके, किसी Firebase प्रोजेक्ट से उन साइटों को मिटाएं जिनकी अब ज़रूरत नहीं है:

  • Firebase कंसोल के Hosting पेज में मौजूद वर्कफ़्लो का इस्तेमाल करें

  • Firebase सीएलआई कमांड का इस्तेमाल करें: firebase hosting:sites:delete SITE_ID

  • Hosting REST API का इस्तेमाल करें: projects.sites.delete

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

तीसरा चरण: अपनी साइटों के लिए, डिप्लॉय करने के टारगेट सेट अप करना

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

डिप्लॉय टारगेट बनाने और TARGET_NAME साइट पर TARGET_NAME लागू करने के लिए, अपनी प्रोजेक्ट डायरेक्ट्री के रूट से यह सीएलआई कमांड चलाएं:Hosting

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

पैरामीटर कहां मौजूद हैं:

  • TARGET_NAMEHosting साइट के लिए एक यूनीक नाम (यह नाम आपने खुद तय किया है)

  • RESOURCE_IDENTIFIERHosting साइट के लिए SITE_ID, आपके Firebase प्रोजेक्ट में दिए गए के तौर पर

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

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

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

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

अपनी 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": [...]
      }
    }

पांचवां चरण: स्थानीय तौर पर जांच करना, बदलावों की झलक देखना, और उन्हें अपनी साइटों पर डिप्लॉय करना

अपने लोकल प्रोजेक्ट डायरेक्ट्री के रूट से, इनमें से कोई भी कमांड चलाएं.

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