1 minute read

Давай разберём построчно все настройки в примере 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/*"]