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

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

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

पहला चरण: अपने Firebase CLI का वर्शन अपडेट करना

Firebase Hosting सुविधाओं को ऐक्सेस करने के लिए, Firebase CLI के सबसे नए वर्शन पर अपडेट करें.

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

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

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

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

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

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

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

कोई दूसरी साइट मिटाना

किसी Firebase प्रोजेक्ट से, काम की न रहने वाली साइटें मिटाने के लिए, इनमें से कोई एक तरीका इस्तेमाल करें:

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

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

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

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

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

यहां पैरामीटर ये हैं:

  • TARGET_NAME — उस साइट के लिए यूनीक नाम (जो आपने तय किया है) जिस पर डिप्लॉय किया जा रहा है Hosting

  • 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 कॉन्टेंट और कॉन्फ़िगरेशन को लाइव चैनल पर डिप्लॉय करता है, जो सभी Hosting साइटों के लिए कॉन्फ़िगर किया गया है firebase.json
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 कॉन्टेंट और कॉन्फ़िगरेशन को दिखाता है