शेयर किए गए मॉड्यूल

शेयर किए गए मॉड्यूल ऐसे संसाधनों के संग्रह होते हैं जिन्हें अनुमति नहीं मिलती है. इन्हें दूसरे एक्सटेंशन और ऐप्लिकेशन के बीच शेयर किया जा सकता है. शेयर किए गए मॉड्यूल के सामान्य इस्तेमाल ये हैं:

  • एपीआई के तौर पर. आपके पास एक ऐसा शेयर मॉड्यूल उपलब्ध कराने का विकल्प होता है जो एचटीएमएल, JS, और अन्य सोर्स उपलब्ध करा सके, ताकि एपीआई उपलब्ध कराया जा सके. मॉड्यूल को, उस पर निर्भर एक्सटेंशन से अलग अपडेट किया जा सकता है. यह रनटाइम और गेम इंजन के लिए काम का हो सकता है, क्योंकि ऐप्लिकेशन में डेटा का इस्तेमाल अक्सर कम होता है. ये डेटा, शेयर किए गए मॉड्यूल के कोड पर चलते हैं.
  • डाउनलोड ऑप्टिमाइज़ेशन के तौर पर. शेयर किए गए मॉड्यूल में ऐसे सामान्य संसाधन शामिल हैं जिनका इस्तेमाल कई एक्सटेंशन करते हैं. इसे एक बार डाउनलोड किया जाता है, यानी पहली बार किसी डिपेंडेंट एक्सटेंशन को इंस्टॉल किए जाने पर.

मेनिफ़ेस्ट

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

एक्सपोर्ट फ़ील्ड से पता चलता है कि एक्सटेंशन एक शेयर किया गया मॉड्यूल है, जो अपने संसाधनों को एक्सपोर्ट करता है:

{
  "version": "1.0",
  "name": "My Shared Module",
  "export": {
    // Optional list of extension IDs explicitly allowed to
    // import this Shared Module's resources.  If no allowlist
    // is given, all extensions are allowed to import it.
    "allowlist": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    ]
  }
  // Note: no permissions are allowed in Shared Modules
}

एक्सटेंशन और ऐप्लिकेशन import फ़ील्ड का इस्तेमाल करके यह एलान करते हैं कि वे शेयर किए गए किसी खास मॉड्यूल के संसाधनों पर निर्भर हैं:

{
  "version": "1.0",
  "name": "My Importing Extension",
  ...
  "import": [
    {"id": "cccccccccccccccccccccccccccccccc"},
    {"id": "dddddddddddddddddddddddddddddddd"
     "minimum_version": "0.5" // optional
    },
  ]
}

संसाधनों को ऐक्सेस करना

शेयर किए गए मॉड्यूल के संसाधनों को, आपके इंपोर्ट किए जाने वाले एक्सटेंशन के रूट में, रिज़र्व किए गए पाथ _modules/SHARED_MODULE_ID से ऐक्सेस किया जाता है. उदाहरण के लिए, ID "CCcccc फ़िल्मों फ़िल्मों का ब्यौरा देने के लिए 'foo.js' की वैल्यू को " उनकेcccc फ़िल्मों फ़िल्मों की जानकारी देने" के साथ शामिल करें. इसके लिए, अपने एक्सटेंशन के रूट में मौजूद इस पाथ का इस्तेमाल करें:

<script src="_modules/cccccccccccccccccccccccccccccccc/foo.js">

अगर इंपोर्ट करने वाले एक्सटेंशन में "aaaaaaaaaaaaaaaaaa,aaa, aaaaaaa," आईडी है, तो शेयर किए गए मॉड्यूल में मौजूद संसाधनों का पूरा यूआरएल होगा:

chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/_modules/cccccccccccccccccccccccccccccccc/

ध्यान रखें कि शेयर किए गए मॉड्यूल में मौजूद संसाधनों को, इंपोर्ट करने वाले एक्सटेंशन के ऑरिजिन में शामिल किया गया है. इसलिए, इंपोर्ट करने वाले एक्सटेंशन को मिले सभी खास अधिकार, शेयर किए गए मॉड्यूल में कोड के लिए उपलब्ध होंगे. साथ ही, शेयर किया गया मॉड्यूल, इंपोर्ट करने वाले एक्सटेंशन में मौजूद संसाधनों को ऐक्सेस कर सकता है. इसके लिए, पूरे पाथ का इस्तेमाल किया जाता है.

इंस्टॉल / अनइंस्टॉल करें

डिपेंडेंट एक्सटेंशन की ज़रूरत पड़ने पर, शेयर किया गया मॉड्यूल Chrome Web Store से अपने-आप इंस्टॉल हो जाता है. साथ ही, जब उस आखिरी एक्सटेंशन को अनइंस्टॉल कर दिया जाता है जो इससे जुड़ा हो, तो वह शेयर किए गए मॉड्यूल को अपने-आप अनइंस्टॉल कर देता है. शेयर किए गए मॉड्यूल का इस्तेमाल करने वाला एक्सटेंशन अपलोड करने के लिए, शेयर किए गए मॉड्यूल को 'Chrome वेब स्टोर' में पब्लिश किया जाना चाहिए. साथ ही, उस एक्सटेंशन पर अनुमति वाली सूची के तहत, शेयर किए गए मॉड्यूल का इस्तेमाल करने पर पाबंदी नहीं होनी चाहिए.

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