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

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

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

मेनिफ़ेस्ट

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

एक्सपोर्ट करना

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

{
  "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 से ऐक्सेस किया जाता है. उदाहरण के लिए, आईडी "CCCCCCccCCcccccc गानों जाएगा." के साथ शेयर किए गए मॉड्यूल से स्क्रिप्ट foo.js शामिल करने के लिए, अपने एक्सटेंशन के रूट से इस पाथ का इस्तेमाल करें:

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

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

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

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

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

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

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