manifest.json
Давай разберём построчно все настройки в примере manifest.json
:
{
"manifest_version": 3,
"name": "My Chrome Extension",
"version": "1.0",
"description": "Моё первое расширение.",
"permissions": ["activeTab", "scripting", "storage"],
"background": {
"service_worker": "custom-background.js"
}
}
📌 1. "manifest_version": 3
Указывает версию формата манифеста.
- Сейчас актуальна версия 3 (Manifest V3).
- V2 больше не рекомендуется и будет вскоре прекращена.
📌 2. "name": "My Chrome Extension"
Имя вашего расширения.
- Отображается в магазине Chrome и на странице
chrome://extensions/
. - Можно локализовать (но это сложнее, пока не будем рассматривать).
📌 3. "version": "1.0"
Версия вашего расширения.
- Используется для отслеживания обновлений.
- Должна быть в формате
"major.minor.patch"
(например,"1.0.0"
).
📌 4. "description": "Моё первое расширение."
Описание вашего расширения.
- Показывается в магазине Chrome и на странице
chrome://extensions/
.
**5. "permissions": [...]
Запрашивает доступ к определённым функциям Chrome API.
["activeTab", "scripting", "storage"]
📌 Что означают эти разрешения?
"activeTab"
— Даёт доступ к текущей активной вкладке. Это нужно, чтобы скрипты взаимодействовали с содержимым веб-страницы."scripting"
— Позволяет вставлять скрипты (content.js
) в веб-страницы через API."storage"
— Даёт доступ к локальному хранилищу (chrome.storage
). Это полезно для сохранения настроек или данных пользователя.
📌 6. "background": { "service_worker": "custom-background.js" }
Этот блок описывает фоновые скрипты, которые выполняются в фоновом режиме, даже если пользователь не взаимодействует с расширением.
"service_worker"
— Это указание Chrome на то, что нужно использовать Service Worker для фоновой работы."custom-background.js"
— Имя файла, который Chrome должен запустить как фоновый скрипт.- Важно: В Manifest V3 фоновые страницы заменены Service Workers, что позволяет работать с фоном без постоянного использования ресурсов.
🔍 Дополнительно:
Если ты хочешь, чтобы расширение могло работать с определёнными URL, нужно добавить:
"host_permissions": ["<all_urls>"]
Или конкретный сайт, например:
"host_permissions": ["https://example.com/*"]