मेनिफ़ेस्ट फ़ाइल फ़ॉर्मैट

हर एक्सटेंशन की रूट डायरेक्ट्री में एक manifest.json फ़ाइल होनी चाहिए. इसमें एक्सटेंशन के स्ट्रक्चर और उसके काम करने के तरीके के बारे में अहम जानकारी दी गई होती है. इस पेज पर, एक्सटेंशन मेनिफ़ेस्ट के स्ट्रक्चर और उनमें शामिल की जा सकने वाली सुविधाओं के बारे में बताया गया है.

उदाहरण

यहां दिए गए मेनिफ़ेस्ट के उदाहरणों में, मेनिफ़ेस्ट का बुनियादी स्ट्रक्चर और कुछ ऐसी सुविधाएं दिखाई गई हैं जिनका आम तौर पर इस्तेमाल किया जाता है. ये सुविधाएं, अपना मेनिफ़ेस्ट बनाने के लिए शुरुआती बिंदु के तौर पर काम करती हैं:

कम से कम मेनिफ़ेस्ट

{
  "manifest_version": 3,
  "name": "Minimal Manifest",
  "version": "1.0.0",
  "description": "A basic example extension with only required keys",
  "icons": {
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  }
}

कॉन्टेंट स्क्रिप्ट रजिस्टर करना

{
  "manifest_version": 3,
  "name": "Run script automatically",
  "description": "Runs a script on www.example.com automatically when user installs the extension",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "content_scripts": [
    {
      "js": [
        "content-script.js"
      ],
      "matches": [
        "http://*.example.com//"
      ]
    }
  ]
}

कॉन्टेंट स्क्रिप्ट इंजेक्ट करना

{
  "manifest_version": 3,
  "name": "Click to run",
  "description": "Runs a script when the user clicks the action toolbar icon.",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_icon": {
      "16": "images/icon-16.png",
      "32": "images/icon-32.png",
      "48": "images/icon-48.png",
      "128": "images/icon-128.png"
    }
  },
  "permissions": ["scripting", "activeTab"]
}
{
  "manifest_version": 3,
  "name": "Popup extension that requests permissions",
  "description": "Extension that includes a popup and requests host permissions and storage permissions.",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "action": {
    "default_popup": "popup.html"
  },
  "host_permissions": [
    "https://*.example.com/"
  ],
  "permissions": [
    "storage"
  ]
}

साइड पैनल

{
  "manifest_version": 3,
  "name": "Side panel extension",
  "version": "1.0",
  "description": "Extension with a default side panel.",
  "icons": {
    "16": "images/icon-16.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "side_panel": {
    "default_path": "sidepanel.html"
  },
  "permissions": ["sidePanel"]
}

मेनिफ़ेस्ट कुंजियां

यहां उन सभी मेनिफ़ेस्ट कुंजियों की सूची दी गई है जिनका इस्तेमाल किया जा सकता है.

एक्सटेंशन प्लैटफ़ॉर्म के लिए ज़रूरी कुंजियां

"manifest_version"
यह एक पूर्णांक होता है. इससे मेनिफ़ेस्ट फ़ाइल फ़ॉर्मैट के उस वर्शन के बारे में पता चलता है जिसका इस्तेमाल आपका एक्सटेंशन करता है. सिर्फ़ 3 वैल्यू का इस्तेमाल किया जा सकता है.
"name"
यह एक स्ट्रिंग होती है. इससे Chrome Web Store, इंस्टॉल डायलॉग, और उपयोगकर्ता के Chrome एक्सटेंशन पेज (chrome://extensions) में एक्सटेंशन की पहचान होती है. इसकी ज़्यादा से ज़्यादा लंबाई 75 वर्ण होती है. किसी जगह के हिसाब से नाम इस्तेमाल करने के बारे में जानने के लिए, अंतरराष्ट्रीयकरण लेख पढ़ें.
"version"
यह स्ट्रिंग, एक्सटेंशन के वर्शन नंबर की पहचान करती है. वर्शन नंबर की फ़ॉर्मैटिंग के बारे में जानकारी पाने के लिए, वर्शन देखें.

Chrome Web Store के लिए ज़रूरी कुंजियां

"description"
यह एक स्ट्रिंग होती है. इसमें Chrome Web Store और उपयोगकर्ता के एक्सटेंशन मैनेजमेंट पेज पर एक्सटेंशन के बारे में जानकारी दी जाती है. इसमें 132 से ज़्यादा वर्ण नहीं हो सकते. ब्यौरों को स्थानीय भाषा में उपलब्ध कराने के बारे में जानकारी के लिए, अंतरराष्ट्रीयकरण देखें.
"icons"
एक या उससे ज़्यादा आइकॉन, जो आपके एक्सटेंशन को दिखाते हैं. सबसे सही तरीकों के बारे में जानने के लिए, Icons देखें.

वैकल्पिक बटन

"action"
इस फ़ील्ड से, Google टूलबार में एक्सटेंशन के आइकॉन के दिखने के तरीके और उसके व्यवहार के बारे में पता चलता है. ज़्यादा जानकारी के लिए, chrome.action देखें.
"background"
इस फ़ील्ड में, एक्सटेंशन के सर्विस वर्कर वाली JavaScript फ़ाइल के बारे में बताया जाता है. यह फ़ाइल, इवेंट हैंडलर के तौर पर काम करती है. ज़्यादा जानकारी के लिए, एक्सटेंशन सर्विस वर्कर के बारे में जानकारी लेख पढ़ें.
"chrome_settings_overrides"
इससे चुनी गई Chrome सेटिंग के लिए, डिफ़ॉल्ट सेटिंग को बदलने की सुविधा मिलती है. ज़्यादा जानकारी के लिए, Chrome की सेटिंग बदलना लेख पढ़ें.
"chrome_url_overrides"
इससे Chrome के डिफ़ॉल्ट पेजों के लिए, डिफ़ॉल्ट सेटिंग को बदलने की सुविधा मिलती है. ज़्यादा जानकारी के लिए, Chrome पेजों को बदलना लेख पढ़ें.
"commands"
यह एक्सटेंशन में कीबोर्ड शॉर्टकट तय करता है. ज़्यादा जानकारी के लिए, chrome.commands देखें.
"content_scripts"
इस नीति से यह तय होता है कि जब उपयोगकर्ता कुछ वेब पेज खोलता है, तब कौनसी JavaScript या सीएसएस फ़ाइलों का इस्तेमाल किया जाए. ज़्यादा जानकारी के लिए, कॉन्टेंट स्क्रिप्ट लेख पढ़ें.
"content_security_policy"
यह एक्सटेंशन के लिए स्क्रिप्ट, स्टाइल, और अन्य संसाधनों के इस्तेमाल पर पाबंदियां तय करता है. ज़्यादा जानकारी के लिए, कॉन्टेंट सुरक्षा नीति देखें.
"cross_origin_embedder_policy"
यह क्रॉस-ऑरिजिन-एम्बेडर-पॉलिसी एचटीटीपी हेडर के लिए वैल्यू तय करता है. यह एक्सटेंशन पेज में क्रॉस-ऑरिजिन संसाधनों को एम्बेड करने की सुविधा कॉन्फ़िगर करता है.
"cross_origin_opener_policy"
यह Cross-Origin-Opener-Policy एचटीटीपी हेडर के लिए वैल्यू तय करता है. इससे यह पक्का किया जा सकता है कि टॉप-लेवल एक्सटेंशन पेज, क्रॉस-ऑरिजिन दस्तावेज़ों के साथ ब्राउज़िंग कॉन्टेक्स्ट ग्रुप शेयर न करे.
"declarative_net_request"
यह declarativeNetRequest API के लिए स्टैटिक नियमों को तय करता है. इससे नेटवर्क अनुरोधों को ब्लॉक और उनमें बदलाव किया जा सकता है.
"default_locale"
यह एक ऐसी स्ट्रिंग है जो ऐसे एक्सटेंशन की डिफ़ॉल्ट भाषा तय करती है जो कई स्थानीय भाषाओं के साथ काम करता है. उदाहरण के लिए, "en" और "pt_BR". यह कुंजी, स्थानीय भाषा में उपलब्ध एक्सटेंशन के लिए ज़रूरी है. इसका इस्तेमाल उन एक्सटेंशन में नहीं किया जाना चाहिए जो स्थानीय भाषा में उपलब्ध नहीं हैं. ज़्यादा जानकारी के लिए, अंतरराष्ट्रीयकरण लेख पढ़ें.
"devtools_page"
यह उन पेजों के बारे में बताता है जो DevTools एपीआई का इस्तेमाल करते हैं.
"export"
इससे एक्सटेंशन से रिसॉर्स एक्सपोर्ट किए जा सकते हैं. ज़्यादा जानकारी के लिए, एक्सपोर्ट करें लेख पढ़ें.
"externally_connectable"
इससे यह तय होता है कि कौनसे अन्य पेज और एक्सटेंशन, आपके एक्सटेंशन से कनेक्ट हो सकते हैं. ज़्यादा जानकारी के लिए, "externally_connectable" देखें.
"homepage_url"
यह स्ट्रिंग, एक्सटेंशन के होम पेज के यूआरएल के बारे में बताती है. अगर इसे तय नहीं किया जाता है, तो होम पेज डिफ़ॉल्ट रूप से एक्सटेंशन का Chrome Web Store पेज होता है. अगर आपने एक्सटेंशन को अपनी साइट पर होस्ट किया है, तो यह फ़ील्ड आपके लिए खास तौर पर काम का है.
"host_permissions"
उन वेब पेजों की सूची बनाता है जिनके साथ आपका एक्सटेंशन इंटरैक्ट कर सकता है. इन्हें यूआरएल मैच पैटर्न का इस्तेमाल करके तय किया जाता है. इन साइटों के लिए उपयोगकर्ता की अनुमति, इंस्टॉल करने के समय मांगी जाती है. ज़्यादा जानकारी के लिए, होस्ट की अनुमतियां लेख पढ़ें.
"import"
इससे एक्सटेंशन में रिसॉर्स इंपोर्ट किए जा सकते हैं. ज़्यादा जानकारी के लिए, इंपोर्ट करें लेख पढ़ें.
"incognito"
इससे यह तय होता है कि एक्सटेंशन, गुप्त मोड में कैसे काम करेगा. "spanning", "split", और "not_allowed" को वैल्यू के तौर पर इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, गुप्त मोड देखें.
"key"
इससे, डेवलपमेंट के अलग-अलग इस्तेमाल के उदाहरणों के लिए, आपके एक्सटेंशन का आईडी तय होता है. ज़्यादा जानकारी के लिए, कुंजी देखें.
"mime_types_handler"
इस एक्सटेंशन को, काम करने वाले MIME टाइप के लिए हैंडलर के तौर पर रजिस्टर करता है. जैसे, application/pdf. ज़्यादा जानकारी के लिए, mimeHandler API देखें.
"minimum_chrome_version"
इससे Chrome के उस सबसे पुराने वर्शन के बारे में पता चलता है जिस पर आपका एक्सटेंशन इंस्टॉल किया जा सकता है. यह ज़रूरी है कि वैल्यू, Chrome ब्राउज़र के मौजूदा वर्शन की स्ट्रिंग का सबस्ट्रिंग हो. जैसे, "107" या "107.0.5304.87". Chrome के पुराने वर्शन इस्तेमाल करने वाले लोगों को Chrome Web Store में "काम नहीं करता" चेतावनी दिखती है. साथ ही, वे आपका एक्सटेंशन इंस्टॉल नहीं कर पाते. अगर इसे किसी मौजूदा एक्सटेंशन में जोड़ा जाता है, तो Chrome के पुराने वर्शन का इस्तेमाल करने वाले लोगों को आपके एक्सटेंशन के अपडेट अपने-आप नहीं मिलेंगे. इसमें अल्पकालिक मोड में कारोबार का इस्तेमाल करने वाले लोग शामिल हैं.
"oauth2"
OAuth 2.0 सुरक्षा आईडी के इस्तेमाल की अनुमति देता है. इस कुंजी की वैल्यू, "client_id" और "scopes" प्रॉपर्टी वाला ऑब्जेक्ट होना चाहिए. ज़्यादा जानकारी के लिए, OAuth 2.0 का ट्यूटोरियल देखें.
"omnibox"
इस अनुमति से एक्सटेंशन, Chrome के पता बार में कोई कीवर्ड रजिस्टर कर सकता है. ज़्यादा जानकारी के लिए, खोज वाली पट्टी देखें.
"optional_host_permissions"
यह आपके एक्सटेंशन के लिए, होस्ट की अनुमतियों का एलान करता है. हालांकि, यह ज़रूरी नहीं है.
"optional_permissions"
यह आपके एक्सटेंशन के लिए ज़रूरी नहीं है कि अनुमतियों का एलान किया जाए.
"options_page"
यह एक्सटेंशन के लिए, options.html फ़ाइल का पाथ तय करता है, ताकि एक्सटेंशन इसे विकल्प वाले पेज के तौर पर इस्तेमाल कर सके. ज़्यादा जानकारी के लिए, उपयोगकर्ताओं को विकल्प देना लेख पढ़ें.
"options_ui"
यह एचटीएमएल फ़ाइल का पाथ तय करता है. इससे उपयोगकर्ता, Chrome एक्सटेंशन पेज से एक्सटेंशन के विकल्प बदल सकता है. ज़्यादा जानकारी के लिए, एम्बेड करने के विकल्प देखें.
"permissions"
इस कुकी से, कुछ एक्सटेंशन एपीआई का इस्तेमाल किया जा सकता है. सामान्य जानकारी के लिए, अनुमतियां देखें. हर एपीआई के लिए रेफ़रंस पेजों में, उन अनुमतियों की सूची दी गई है जिनकी उन्हें ज़रूरत होती है.
"requirements"
इस एक्सटेंशन का इस्तेमाल करने के लिए ज़रूरी टेक्नोलॉजी की सूची दिखाता है. ज़रूरी शर्तों की सूची देखने के लिए, ज़रूरी शर्तें देखें.
"sandbox"
यह एक्सटेंशन पेजों का एक ऐसा सेट तय करता है जिनके पास एक्सटेंशन एपीआई का ऐक्सेस नहीं होता. साथ ही, इनके पास सीधे तौर पर नॉन-सैंडबॉक्स पेजों का ऐक्सेस भी नहीं होता. ज़्यादा जानकारी के लिए, सैंडबॉक्स देखें.
"short_name"
यह एक स्ट्रिंग है. इसमें एक्सटेंशन के नाम का छोटा वर्शन होता है. इसका इस्तेमाल तब किया जाता है, जब वर्णों की संख्या सीमित हो. इसमें 12 से ज़्यादा वर्ण नहीं हो सकते. अगर यह undefined है, तो इसके बजाय "name" कुंजी का छोटा किया गया वर्शन दिखता है.
"side_panel"
यह sidePanel में दिखाने के लिए, किसी एचटीएमएल फ़ाइल की पहचान करता है.
"storage"
यह मैनेज किए गए स्टोरेज एरिया के लिए JSON स्कीमा का एलान करता है. ज़्यादा जानकारी के लिए, स्टोरेज एरिया के लिए मेनिफ़ेस्ट देखें.
"tts_engine"
यह एक्सटेंशन को, लिखाई को बोली में बदलने वाले इंजन के तौर पर रजिस्टर करता है. ज़्यादा जानकारी के लिए, ttsEngine API देखें.
"update_url"
इस स्ट्रिंग में एक्सटेंशन के अपडेट पेज का यूआरएल होता है. अगर आपको Chrome Web Store के बाहर अपना एक्सटेंशन होस्ट करना है, तो इस कुंजी का इस्तेमाल करें.
"version_name"
एक्सटेंशन के वर्शन की जानकारी देने वाली स्ट्रिंग. उदाहरण के लिए, "1.0 beta" और "build rc2". अगर यह जानकारी नहीं दी जाती है, तो "वर्शन" वैल्यू, एक्सटेंशन मैनेजमेंट पेज पर दिखती है.
"web_accessible_resources"
इससे एक्सटेंशन में मौजूद उन फ़ाइलों के बारे में पता चलता है जिन्हें वेब पेज या अन्य एक्सटेंशन ऐक्सेस कर सकते हैं. ज़्यादा जानकारी के लिए, वेब पर ऐक्सेस किए जा सकने वाले संसाधन लेख पढ़ें.

ChromeOS की वैकल्पिक कुंजियां

"file_browser_handlers"
इस अनुमति से, fileBrowserHandler API का ऐक्सेस मिलता है. इसकी मदद से एक्सटेंशन, ChromeOS के फ़ाइल ब्राउज़र को ऐक्सेस कर सकते हैं.
"file_handlers"
इससे ChromeOS एक्सटेंशन के लिए, हैंडल किए जाने वाले फ़ाइल टाइप तय किए जाते हैं. ज़्यादा जानकारी के लिए, file_handlers देखें.
"file_system_provider_capabilities"
इस अनुमति से, fileSystemProvider एपीआई को ऐक्सेस किया जा सकता है. इस एपीआई की मदद से एक्सटेंशन, ऐसे फ़ाइल सिस्टम बना सकते हैं जिनका इस्तेमाल ChromeOS कर सकता है.
"input_components"
इस कुकी से, Input Method Editor API का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, input_components देखें.