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

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

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

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

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

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

इनमें से किसी एक तरीके का इस्तेमाल करके, 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 कॉन्फ़िगरेशन फ़ाइल और Firebase सीएलआई कमांड में TARGET_NAME की मदद से, किसी खास साइट की खास तौर पर पहचान की जा सकती है.

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

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 के कॉन्टेंट और कॉन्फ़िगरेशन को, 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 कॉन्टेंट और कॉन्फ़िगरेशन दिखाता है