हर एक्सटेंशन की रूट डायरेक्ट्री में 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-Embedder-Policy एचटीटीपी हेडर के लिए कोई वैल्यू तय की जाती है. इससे, एक्सटेंशन के किसी पेज में, क्रॉस-ऑरिजिन वाले संसाधनों को एम्बेड करने की सुविधा कॉन्फ़िगर की जाती है.
"cross_origin_opener_policy"- इससे Cross-Origin-Opener-Policy एचटीटीपी हेडर के लिए कोई वैल्यू तय की जाती है. इससे यह पक्का किया जा सकता है कि टॉप-लेवल वाला एक्सटेंशन पेज, क्रॉस-ऑरिजिन वाले दस्तावेज़ों के साथ ब्राउज़िंग कॉन्टेक्स्ट ग्रुप शेयर न करे.
"declarative_net_request"- इससे declarativeNetRequest API के लिए स्टैटिक नियम तय किए जाते हैं. इस एपीआई की मदद से, नेटवर्क के अनुरोधों को ब्लॉक और उनमें बदलाव किया जा सकता है.
"default_locale"- यह एक स्ट्रिंग है. इससे, एक से ज़्यादा स्थानीय भाषाओं में काम करने वाले एक्सटेंशन की डिफ़ॉल्ट भाषा तय की जाती है. उदाहरण के लिए, "en" और "pt_BR". स्थानीय भाषा में अनुवाद किए गए एक्सटेंशन में, इस कुंजी का इस्तेमाल करना ज़रूरी है. साथ ही, स्थानीय भाषा में अनुवाद नहीं किए गए एक्सटेंशन में इसका इस्तेमाल नहीं किया जाना चाहिए. ज़्यादा जानकारी के लिए, अंतरराष्ट्रीयकरण देखें.
"devtools_page"- इससे उन पेजों के बारे में पता चलता है जो DevTools API का इस्तेमाल करते हैं.
"export"- इससे एक्सटेंशन से संसाधन एक्सपोर्ट किए जा सकते हैं. ज़्यादा जानकारी के लिए, एक्सपोर्ट करें देखें.
"externally_connectable"- इससे यह तय होता है कि आपके एक्सटेंशन से कौनसे अन्य पेज और एक्सटेंशन कनेक्ट हो सकते हैं. ज़्यादा जानकारी के लिए, देखें
"externally_connectable". "homepage_url"- यह एक स्ट्रिंग है. इससे एक्सटेंशन के होम पेज के लिए कोई यूआरएल तय किया जाता है. अगर यह तय नहीं किया जाता है, तो होम पेज डिफ़ॉल्ट रूप से एक्सटेंशन का Chrome Web Store पेज होता है. अगर एक्सटेंशन को अपनी साइट पर होस्ट किया जाता है, तो यह फ़ील्ड खास तौर पर काम का होता है.
"host_permissions"- इसमें उन वेब पेजों की सूची शामिल होती है जिनसे आपका एक्सटेंशन इंटरैक्ट कर सकता है. इन्हें यूआरएल मैच पैटर्न का इस्तेमाल करके तय किया जाता है. इन साइटों के लिए, इंस्टॉल करते समय उपयोगकर्ता की अनुमति का अनुरोध किया जाता है. ज़्यादा जानकारी के लिए, होस्ट की अनुमतियां देखें.
"import"- इससे एक्सटेंशन में संसाधन इंपोर्ट किए जा सकते हैं. ज़्यादा जानकारी के लिए, इंपोर्ट करें देखें.
"incognito"- इससे तय होता है कि गुप्त मोड में एक्सटेंशन कैसे काम करता है. इन वैल्यू का इस्तेमाल किया जा सकता है:
"spanning","split", और"not_allowed". ज़्यादा जानकारी के लिए, गुप्त मोड देखें. "key"- इससे डेवलपमेंट के अलग-अलग इस्तेमाल के मामलों के लिए, आपके एक्सटेंशन का आईडी तय किया जाता है. ज़्यादा जानकारी के लिए, कुंजी देखें.
"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 के पता बार में कोई कीवर्ड रजिस्टर कर सकता है. ज़्यादा जानकारी के लिए, Omnibox देखें.
"optional_host_permissions"- इससे आपके एक्सटेंशन के लिए, होस्ट की वैकल्पिक अनुमतियों का एलान किया जाता है.
"optional_permissions"- इससे आपके एक्सटेंशन के लिए, वैकल्पिक अनुमतियों का एलान किया जाता है.
"options_page"- इससे options.html फ़ाइल का पाथ तय किया जाता है. इसका इस्तेमाल एक्सटेंशन, विकल्प वाले पेज के तौर पर करता है. ज़्यादा जानकारी के लिए, उपयोगकर्ताओं को विकल्प देना देखें.
"options_ui"- इससे किसी एचटीएमएल फ़ाइल का पाथ तय किया जाता है. इसकी मदद से, उपयोगकर्ता Chrome एक्सटेंशन पेज से एक्सटेंशन के विकल्प बदल सकता है. ज़्यादा जानकारी के लिए, एम्बेड किए गए विकल्प देखें.
"permissions"- इससे एक्सटेंशन के खास एपीआई का इस्तेमाल किया जा सकता है. सामान्य जानकारी के लिए, अनुमतियां देखें. हर एपीआई के रेफ़रंस पेजों में, उन अनुमतियों की सूची शामिल होती है जिनकी ज़रूरत उन्हें होती है.
"requirements"- इसमें उन टेक्नोलॉजी की सूची शामिल होती है जिनकी ज़रूरत एक्सटेंशन का इस्तेमाल करने के लिए होती है. ज़रूरी शर्तों की सूची देखने के लिए, ज़रूरी शर्तें देखें.
"sandbox"- इससे एक्सटेंशन के पेजों का एक ऐसा सेट तय किया जाता है जिनके पास एक्सटेंशन के एपीआई का ऐक्सेस नहीं होता. साथ ही, इनके पास सैंडबॉक्स से बाहर के पेजों का डायरेक्ट ऐक्सेस भी नहीं होता. ज़्यादा जानकारी के लिए, सैंडबॉक्स देखें.
"short_name"- यह एक स्ट्रिंग है. इसमें एक्सटेंशन के नाम का छोटा वर्शन शामिल होता है. इसका इस्तेमाल तब किया जाता है, जब वर्णों की संख्या सीमित होती है. इसमें ज़्यादा से ज़्यादा 12 वर्ण हो सकते हैं. अगर यह तय नहीं किया जाता है, तो इसके बजाय "name" कुंजी का छोटा वर्शन दिखता है.
"side_panel"- इससे किसी एचटीएमएल फ़ाइल की पहचान होती है, जिसे sidePanel में दिखाया जाता है.
"storage"
इससे - मैनेज किए जा रहे स्टोरेज एरिया के लिए, JSON स्कीमा का एलान किया जाता है. ज़्यादा जानकारी के लिए, स्टोरेज एरिया के लिए मेनिफ़ेस्ट देखें.
"tts_engine"- इससे एक्सटेंशन को, लिखाई को बोली में बदलने वाले इंजन के तौर पर रजिस्टर किया जाता है. ज़्यादा जानकारी के लिए, ttsEngine API देखें.
"update_url"- यह एक स्ट्रिंग है. इसमें एक्सटेंशन के अपडेट वाले पेज का यूआरएल शामिल होता है. अगर एक्सटेंशन को Chrome Web Store के बाहर होस्ट किया जा रहा है, तो इस कुंजी का इस्तेमाल करें.
"version_name"- यह एक स्ट्रिंग है. इससे एक्सटेंशन के वर्शन की जानकारी मिलती है. उदाहरण के लिए,
"1.0 beta"और"build rc2". अगर यह तय नहीं किया जाता है, तो इसके बजाय एक्सटेंशन मैनेजमेंट पेज पर "version" की वैल्यू दिखती है. "web_accessible_resources"- इससे एक्सटेंशन में मौजूद उन फ़ाइलों के बारे में पता चलता है जिन्हें वेब पेजों या अन्य एक्सटेंशन से ऐक्सेस किया जा सकता है. ज़्यादा जानकारी के लिए, वेब पर ऐक्सेस किए जा सकने वाले संसाधन देखें.
ChromeOS की वैकल्पिक कुंजियां
"file_browser_handlers"- इससे
fileBrowserHandlerAPI का ऐक्सेस मिलता है. इसकी मदद से, एक्सटेंशन ChromeOS के फ़ाइल ब्राउज़र को ऐक्सेस कर सकते हैं. "file_handlers"- इससे ChromeOS एक्सटेंशन के लिए, फ़ाइल टाइप तय किए जाते हैं. ज़्यादा जानकारी के लिए,
देखें
file_handlers. "file_system_provider_capabilities"- इससे
fileSystemProviderAPI का ऐक्सेस मिलता है. इसकी मदद से, एक्सटेंशन ऐसे फ़ाइल सिस्टम बना सकते हैं जिनका इस्तेमाल ChromeOS कर सकता है. "input_components"- इससे Input Method Editor API का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए,
input_componentsदेखें.