প্রতিটি এক্সটেনশনের রুট ডিরেক্টরিতে অবশ্যই একটি 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://extensions) এক্সটেনশনটিকে শনাক্ত করে। এর সর্বোচ্চ দৈর্ঘ্য ৭৫ অক্ষর। লোকেল-নির্দিষ্ট নাম ব্যবহারের তথ্যের জন্য, আন্তর্জাতিকীকরণ দেখুন। -
"version" - একটি স্ট্রিং যা এক্সটেনশনটির সংস্করণ নম্বর শনাক্ত করে। সংস্করণ নম্বর বিন্যাস সম্পর্কে তথ্যের জন্য, সংস্করণ দেখুন।
ক্রোম ওয়েব স্টোরের জন্য প্রয়োজনীয় কীগুলি
-
"description" - একটি স্ট্রিং যা ক্রোম ওয়েব স্টোর এবং ব্যবহারকারীর এক্সটেনশন ম্যানেজমেন্ট পেজ উভয় স্থানেই এক্সটেনশনটির বর্ণনা দেয়। এর সর্বোচ্চ দৈর্ঘ্য ১৩২ অক্ষর। বর্ণনার স্থানীয়করণ সংক্রান্ত তথ্যের জন্য, আন্তর্জাতিকীকরণ দেখুন।
-
"icons" - আপনার এক্সটেনশনকে উপস্থাপন করে এমন এক বা একাধিক আইকন। সর্বোত্তম অনুশীলন সম্পর্কে তথ্যের জন্য, আইকনসমূহ দেখুন।
ঐচ্ছিক কী
-
"action" - গুগল টুলবারে এক্সটেনশনটির আইকনের চেহারা ও আচরণ নির্ধারণ করে। আরও তথ্যের জন্য,
chrome.actionদেখুন। -
"background" - এক্সটেনশনটির সার্ভিস ওয়ার্কার ধারণকারী জাভাস্ক্রিপ্ট ফাইলটি নির্দিষ্ট করে, যা একটি ইভেন্ট হ্যান্ডলার হিসেবে কাজ করে। আরও তথ্যের জন্য, ‘এক্সটেনশন সার্ভিস ওয়ার্কার সম্পর্কে’ দেখুন।
-
"chrome_settings_overrides" - নির্বাচিত ক্রোম সেটিংসের জন্য ওভাররাইড নির্ধারণ করে। আরও তথ্যের জন্য, ক্রোম সেটিংস ওভাররাইড করা দেখুন।
-
"chrome_url_overrides" - ডিফল্ট ক্রোম পেজগুলির জন্য ওভাররাইড নির্ধারণ করে। আরও তথ্যের জন্য, ‘ক্রোম পেজ ওভাররাইড করুন’ দেখুন।
-
"commands" - এক্সটেনশনের মধ্যে কিবোর্ড শর্টকাটগুলো নির্ধারণ করে। আরও তথ্যের জন্য, chrome.commands দেখুন।
-
"content_scripts" - ব্যবহারকারী নির্দিষ্ট কিছু ওয়েব পেজ খুললে কোন জাভাস্ক্রিপ্ট বা সিএসএস ফাইল ব্যবহার করা হবে তা নির্দিষ্ট করে। আরও তথ্যের জন্য, কন্টেন্ট স্ক্রিপ্টস দেখুন।
-
"content_security_policy" - একটি এক্সটেনশন যে স্ক্রিপ্ট, স্টাইল এবং অন্যান্য রিসোর্স ব্যবহার করতে পারবে, তার উপর বিধিনিষেধ নির্ধারণ করে। আরও তথ্যের জন্য, কন্টেন্ট নিরাপত্তা নীতি দেখুন।
-
"cross_origin_embedder_policy" - Cross-Origin-Embedder-Policy HTTP হেডারের জন্য একটি মান নির্দিষ্ট করে, যা একটি এক্সটেনশন পৃষ্ঠায় ক্রস-অরিজিন রিসোর্স এম্বেড করার বিষয়টি কনফিগার করে।
-
"cross_origin_opener_policy" - Cross-Origin-Opener-Policy HTTP হেডারের জন্য একটি মান নির্দিষ্ট করে, যা আপনাকে নিশ্চিত করতে সাহায্য করে যে একটি শীর্ষ-স্তরের এক্সটেনশন পৃষ্ঠা ক্রস-অরিজিন ডকুমেন্টগুলির সাথে একই ব্রাউজিং কনটেক্সট গ্রুপ ব্যবহার করবে না।
-
"declarative_net_request" - declarativeNetRequest API-এর জন্য স্থির নিয়মাবলী সংজ্ঞায়িত করে, যা নেটওয়ার্ক অনুরোধ ব্লক করা এবং পরিবর্তন করার সুযোগ দেয়।
-
"default_locale" - একটি স্ট্রিং যা একাধিক লোকেল সমর্থনকারী কোনো এক্সটেনশনের ডিফল্ট ভাষা নির্ধারণ করে। উদাহরণস্বরূপ, "en" এবং "pt_BR"। স্থানীয়করণ করা এক্সটেনশনগুলিতে এই কী-টি আবশ্যক, এবং যে এক্সটেনশনগুলি স্থানীয়করণ করা হয়নি সেগুলিতে এটি ব্যবহার করা যাবে না। আরও তথ্যের জন্য, আন্তর্জাতিকীকরণ দেখুন।
-
"devtools_page" - ডেভটুলস এপিআই ব্যবহারকারী পৃষ্ঠাগুলিকে সংজ্ঞায়িত করে।
-
"export" - এক্সটেনশন থেকে রিসোর্স রপ্তানি করার অনুমতি দেয়। আরও তথ্যের জন্য, এক্সপোর্ট দেখুন।
-
"externally_connectable" - অন্য কোন কোন পেজ ও এক্সটেনশন আপনার এক্সটেনশনের সাথে সংযোগ করতে পারবে তা নির্দিষ্ট করে। আরও তথ্যের জন্য,
"externally_connectable"দেখুন। -
"homepage_url" - এক্সটেনশনটির হোমপেজের জন্য একটি ইউআরএল নির্দিষ্টকারী স্ট্রিং। এটি অনির্ধারিত থাকলে, হোমপেজটি ডিফল্টভাবে এক্সটেনশনটির ক্রোম ওয়েব স্টোর পেজ হয়ে যায়। আপনি যদি আপনার নিজের সাইটে এক্সটেনশনটি হোস্ট করেন , তবে এই ফিল্ডটি বিশেষভাবে উপযোগী।
-
"host_permissions" - ইউআরএল ম্যাচ প্যাটার্ন ব্যবহার করে সংজ্ঞায়িত করা হয়, আপনার এক্সটেনশনটি যেসব ওয়েব পেজের সাথে ইন্টারঅ্যাক্ট করার অনুমতি পেয়েছে, তার তালিকা এখানে দেওয়া আছে। ইনস্টল করার সময় এই সাইটগুলোর জন্য ব্যবহারকারীর অনুমতি চাওয়া হয়। আরও তথ্যের জন্য, হোস্ট পারমিশন দেখুন।
-
"import" - এক্সটেনশনে রিসোর্স ইম্পোর্ট করার অনুমতি দেয়। আরও তথ্যের জন্য, ইম্পোর্ট দেখুন।
-
"incognito" - ইনকগনিটো মোডে এক্সটেনশনটি কীভাবে কাজ করবে তা এটি নির্ধারণ করে। সমর্থিত মানগুলো হলো
"spanning","split"এবং"not_allowed"। আরও তথ্যের জন্য, ইনকগনিটো দেখুন। -
"key" - বিভিন্ন উন্নয়নমূলক কাজের জন্য আপনার এক্সটেনশনের আইডি নির্দিষ্ট করে। আরও তথ্যের জন্য, ‘Key’ দেখুন।
-
"minimum_chrome_version" - এটি ক্রোমের সবচেয়ে পুরোনো সংস্করণ নির্ধারণ করে যা আপনার এক্সটেনশনটি ইনস্টল করতে পারবে। মানটি অবশ্যই বিদ্যমান কোনো ক্রোম ব্রাউজার সংস্করণ স্ট্রিং-এর একটি সাবস্ট্রিং হতে হবে, যেমন
"107"বা"107.0.5304.87"। ন্যূনতম সংস্করণের চেয়ে পুরোনো ক্রোম সংস্করণ ব্যবহারকারীরা ক্রোম ওয়েব স্টোরে একটি "সামঞ্জস্যপূর্ণ নয়" (Not compatible) সতর্কতা দেখতে পান এবং আপনার এক্সটেনশনটি ইনস্টল করতে পারেন না। আপনি যদি এটি কোনো বিদ্যমান এক্সটেনশনে যোগ করেন, তাহলে পুরোনো ক্রোম সংস্করণ ব্যবহারকারীরা আপনার এক্সটেনশনের স্বয়ংক্রিয় আপডেট পাবেন না। এর মধ্যে এফিমিরাল মোডে থাকা ব্যবসায়িক ব্যবহারকারীরাও অন্তর্ভুক্ত। -
"oauth2" - একটি OAuth 2.0 সিকিউরিটি আইডি ব্যবহারের অনুমতি দেয়। এই কী-টির ভ্যালু অবশ্যই একটি অবজেক্ট হতে হবে, যার মধ্যে
"client_id"এবং"scopes"প্রপার্টি থাকবে। বিস্তারিত জানতে, OAuth 2.0 টিউটোরিয়ালটি দেখুন। -
"omnibox" - এক্সটেনশনটিকে ক্রোমের অ্যাড্রেস বারে একটি কীওয়ার্ড নিবন্ধন করার অনুমতি দেয়। আরও তথ্যের জন্য, অমনিবক্স দেখুন।
-
"optional_host_permissions" - আপনার এক্সটেনশনের জন্য ঐচ্ছিক হোস্ট অনুমতি ঘোষণা করে।
-
"optional_permissions" - আপনার এক্সটেনশনের জন্য ঐচ্ছিক অনুমতিসমূহ ঘোষণা করে।
-
"options_page" - এক্সটেনশনটির অপশন পেজ হিসেবে ব্যবহারের জন্য একটি options.html ফাইলের পাথ নির্দিষ্ট করে। আরও তথ্যের জন্য, ‘ব্যবহারকারীদের অপশন দিন’ দেখুন।
-
"options_ui" - একটি HTML ফাইলের পাথ নির্দিষ্ট করে, যা ব্যবহারকারীকে Chrome এক্সটেনশন পেজ থেকে এক্সটেনশনের অপশন পরিবর্তন করার সুযোগ দেয়। আরও তথ্যের জন্য, এমবেডেড অপশন দেখুন।
-
"permissions" - নির্দিষ্ট এক্সটেনশন এপিআই ব্যবহারের অনুমতি দেয়। সাধারণ ব্যাখ্যার জন্য ‘অনুমতিসমূহ’ দেখুন। প্রতিটি এপিআই-এর রেফারেন্স পেজে সেগুলোর জন্য প্রয়োজনীয় অনুমতির তালিকা দেওয়া থাকে।
-
"requirements" - এক্সটেনশনটি ব্যবহার করার জন্য প্রয়োজনীয় প্রযুক্তিগুলোর তালিকা দেওয়া হয়েছে। সমর্থিত আবশ্যকতার তালিকার জন্য, আবশ্যকতাসমূহ দেখুন।
-
"sandbox" - এমন একগুচ্ছ এক্সটেনশন পেজকে সংজ্ঞায়িত করে, যেগুলোর এক্সটেনশন এপিআই বা নন-স্যান্ডবক্সড পেজগুলোতে সরাসরি অ্যাক্সেস নেই। আরও তথ্যের জন্য, স্যান্ডবক্স দেখুন।
-
"short_name" - এক্সটেনশনের নামের একটি সংক্ষিপ্ত সংস্করণ ধারণকারী স্ট্রিং, যা অক্ষরের স্থান সীমিত থাকলে ব্যবহার করা হবে। এর সর্বোচ্চ দৈর্ঘ্য ১২ অক্ষর। যদি এটি অনির্ধারিত থাকে, তবে এর পরিবর্তে 'name' কী-টির একটি সংক্ষিপ্ত সংস্করণ প্রদর্শিত হবে।
-
"side_panel" - সাইডপ্যানেলে প্রদর্শনের জন্য একটি HTML ফাইল শনাক্ত করে।
-
"storage" - পরিচালিত স্টোরেজ এলাকার জন্য একটি JSON স্কিমা ঘোষণা করে। আরও তথ্যের জন্য, স্টোরেজ এলাকার ম্যানিফেস্ট দেখুন।
-
"tts_engine" - এক্সটেনশনটিকে একটি টেক্সট-টু-স্পিচ ইঞ্জিন হিসেবে নিবন্ধন করে। আরও তথ্যের জন্য, ttsEngine API দেখুন।
-
"update_url" - এক্সটেনশনটির আপডেট পেজের URL ধারণকারী একটি স্ট্রিং। আপনি যদি Chrome Web Store-এর বাইরে আপনার এক্সটেনশনটি হোস্ট করেন , তাহলে এই কী-টি ব্যবহার করুন।
-
"version_name" - এক্সটেনশনটির সংস্করণ বর্ণনা করে এমন একটি স্ট্রিং। উদাহরণস্বরূপ
"1.0 beta"এবং"build rc2"। যদি এটি নির্দিষ্ট করা না থাকে, তাহলে এর পরিবর্তে এক্সটেনশন ম্যানেজমেন্ট পেজে "version" মানটি প্রদর্শিত হয়। -
"web_accessible_resources" - এক্সটেনশনের অন্তর্গত সেই ফাইলগুলোকে সংজ্ঞায়িত করে, যেগুলো ওয়েব পেজ বা অন্যান্য এক্সটেনশন দ্বারা অ্যাক্সেস করা যায়। আরও তথ্যের জন্য, ওয়েব অ্যাক্সেসিবল রিসোর্সেস (Web Accessible Resources) দেখুন।
ঐচ্ছিক ChromeOS কী
-
"file_browser_handlers" -
fileBrowserHandlerAPI-তে অ্যাক্সেস প্রদান করে, যা এক্সটেনশনগুলিকে ChromeOS ফাইল ব্রাউজার অ্যাক্সেস করতে দেয়। -
"file_handlers" - ChromeOS এক্সটেনশনগুলো কোন ধরনের ফাইল পরিচালনা করবে তা নির্দিষ্ট করে। আরও তথ্যের জন্য,
file_handlersদেখুন। -
"file_system_provider_capabilities" -
fileSystemProviderAPI-তে অ্যাক্সেসের অনুমতি দেয়, যার মাধ্যমে এক্সটেনশনগুলো ChromeOS ব্যবহারযোগ্য ফাইল সিস্টেম তৈরি করতে পারে। -
"input_components" - ইনপুট মেথড এডিটর এপিআই ব্যবহারের অনুমতি দেয়। আরও তথ্যের জন্য,
input_componentsদেখুন।