Формат файла манифеста

Каждое расширение должно иметь файл 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"
Один или несколько значков, представляющих ваше расширение. Информацию о рекомендуемых методах см. в разделе «Значки» .

Дополнительные ключи

"action"
Определяет внешний вид и поведение значка расширения на панели инструментов Google. Для получения дополнительной информации см. chrome.action .
"background"
Указывает файл JavaScript, содержащий сервис-воркер расширения, который выступает в качестве обработчика событий. Для получения дополнительной информации см. раздел «О сервис-воркерах расширений» .
"chrome_settings_overrides"
Определяет параметры, которые можно переопределить для выбранных настроек Chrome. Дополнительную информацию см. в разделе «Переопределение настроек Chrome» .
"chrome_url_overrides"
Определяет параметры переопределения для страниц Chrome по умолчанию. Дополнительную информацию см. в разделе «Переопределение страниц Chrome» .
"commands"
Определяет сочетания клавиш внутри расширения. Для получения дополнительной информации см. chrome.commands .
"content_scripts"
Указывает файлы JavaScript или CSS, которые будут использоваться при открытии пользователем определенных веб-страниц. Дополнительную информацию см. в разделе «Скрипты содержимого» .
"content_security_policy"
Определяет ограничения на скрипты, стили и другие ресурсы, которые может использовать расширение. Для получения дополнительной информации см. раздел «Политика безопасности контента» .
"cross_origin_embedder_policy"
Задает значение для HTTP-заголовка Cross-Origin-Embedder-Policy, который настраивает встраивание ресурсов из других источников на страницу расширения.
"cross_origin_opener_policy"
Указывает значение для HTTP-заголовка Cross-Origin-Opener-Policy, которое позволяет гарантировать, что страница расширения верхнего уровня не будет использовать ту же группу контекста просмотра, что и документы из других источников.
"declarative_net_request"
Определяет статические правила для API declarativeNetRequest , позволяющие блокировать и изменять сетевые запросы.
"default_locale"
Строка, определяющая язык по умолчанию для расширения, поддерживающего несколько языковых версий. Примеры: "en" и "pt_BR". Этот ключ обязателен для локализованных расширений и не должен использоваться в нелокализованных расширениях. Для получения дополнительной информации см. раздел "Интернационализация" .
"devtools_page"
Определяет страницы, использующие API инструментов разработчика .
"export"
Позволяет экспортировать ресурсы из расширения. Для получения дополнительной информации см. раздел «Экспорт» .
"externally_connectable"
Указывает, какие другие страницы и расширения могут подключаться к вашим расширениям. Для получения дополнительной информации см. "externally_connectable" .
"homepage_url"
Строка, указывающая URL-адрес домашней страницы расширения. Если этот параметр не определен, по умолчанию отображается страница расширения в Chrome Web Store. Это поле особенно полезно, если вы размещаете расширение на собственном сайте.
"host_permissions"
В этом списке перечислены веб-страницы, с которыми вашему расширению разрешено взаимодействовать, определенные с помощью шаблонов соответствия URL-адресов. Разрешение пользователя на доступ к этим сайтам запрашивается во время установки. Для получения дополнительной информации см. раздел «Разрешения хоста» .
"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"
Указывает путь к HTML-файлу, позволяющему пользователю изменять параметры расширения на странице расширений Chrome. Дополнительную информацию см. в разделе «Встроенные параметры» .
"permissions"
Позволяет использовать определенные API расширений. Общее объяснение см. в разделе «Разрешения» . На страницах справочника для отдельных API указаны необходимые для их использования разрешения.
"requirements"
В этом разделе перечислены технологии, необходимые для использования расширения. Список поддерживаемых технологий см. в разделе «Требования» .
"sandbox"
Определяет набор страниц расширений, которые не имеют доступа к API расширений или прямого доступа к страницам, не находящимся в песочнице. Для получения дополнительной информации см. раздел «Песочница» .
"short_name"
Строка, содержащая сокращенную версию имени расширения, используемую при ограниченном количестве символов. Максимальная длина — 12 символов. Если это значение не определено, вместо него отображается усеченная версия ключа "name".
"side_panel"
Указывает HTML-файл для отображения в боковой панели .
"storage"
Объявляет JSON-схему для управляемой области хранения . Для получения дополнительной информации см. Манифест для областей хранения .
"tts_engine"
Регистрирует расширение в качестве механизма преобразования текста в речь. Для получения дополнительной информации см. API ttsEngine .
"update_url"
Строка, содержащая URL-адрес страницы обновлений расширения. Используйте этот ключ, если ваше расширение размещено вне Chrome Web Store.
"version_name"
Строка, описывающая версию расширения. Примеры: "1.0 beta" и "build rc2" . Если версия не указана, вместо неё на странице управления расширением отображается значение "version".
"web_accessible_resources"
Определяет файлы внутри расширения, к которым могут быть доступны веб-страницы или другие расширения. Для получения дополнительной информации см. раздел «Доступные веб-ресурсы» .

Дополнительные ключи ChromeOS

"file_browser_handlers"
Предоставляет доступ к API fileBrowserHandler , который позволяет расширениям получать доступ к файловому браузеру ChromeOS.
"file_handlers"
Указывает типы файлов, которые должны обрабатывать расширения ChromeOS. Для получения дополнительной информации см. file_handlers .
"file_system_provider_capabilities"
Предоставляет доступ к API fileSystemProvider , который позволяет расширениям создавать файловые системы, которые может использовать ChromeOS.
"input_components"
Позволяет использовать API редактора методов ввода. Для получения дополнительной информации см. input_components .