Formato de archivo de manifiesto

Cada extensión debe tener un archivo manifest.json en su directorio raíz que enumere información importante sobre la estructura y el comportamiento de esa extensión. En esta página, se explica la estructura de los manifiestos de extensión y las funciones que pueden incluir.

Ejemplos

En los siguientes ejemplos de manifiestos, se muestra la estructura básica del manifiesto y algunas funciones de uso general como punto de partida para crear tu propio manifiesto:

Manifiesto mínimo

{
  "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"
  },
}

Registra una secuencia de comandos de contenido

{
  "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//"
      ]
    }
  ]
}

Cómo insertar una secuencia de comandos de contenido

{
  "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"
  ]
}

Panel lateral

{
  "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"]
}

Claves del manifiesto

La siguiente es una lista de todas las claves de manifiesto admitidas.

Claves que requiere la plataforma de extensiones

"manifest_version"
Un número entero que especifica la versión del formato de archivo de manifiesto que usa tu extensión. El único valor admitido es 3.
"name"
Es una cadena que identifica la extensión en Chrome Web Store, el diálogo de instalación y la página Extensiones de Chrome del usuario (chrome://extensions). La longitud máxima es de 75 caracteres. Para obtener información sobre el uso de nombres específicos de configuración regional, consulta Internacionalización.
"version"
Es una cadena que identifica el número de versión de la extensión. Para obtener información sobre el formato de los números de versión, consulta Versión.

Claves que requiere Chrome Web Store

"description"
Es una cadena que describe la extensión en Chrome Web Store y en la página de administración de extensiones del usuario. La longitud máxima es de 132 caracteres. Para obtener información sobre la localización de descripciones, consulta Internacionalización.
"icons"
Uno o más íconos que representen tu extensión. Para obtener información sobre las prácticas recomendadas, consulta Íconos.

Claves opcionales

"action"
Define la apariencia y el comportamiento del ícono de la extensión en la barra de herramientas de Google. Para obtener más información, consulta chrome.action.
"author"
Especifica la dirección de correo electrónico de la cuenta que se usó para crear la extensión.
"background"
Especifica el archivo JavaScript que contiene el service worker de la extensión, que actúa como un controlador de eventos. Para obtener más información, consulta Acerca de los trabajadores del servicio de extensión.
"chrome_settings_overrides"
Define las anulaciones para la configuración seleccionada de Chrome. Para obtener más información, consulta Cómo anular la configuración de Chrome.
"chrome_url_overrides"
Define anulaciones para las páginas predeterminadas de Chrome. Para obtener más información, consulta Cómo anular páginas de Chrome.
"commands"
Define las combinaciones de teclas dentro de la extensión. Para obtener más información, consulta chrome.commands.
"content_scripts"
Especifica los archivos JavaScript o CSS que se usarán cuando el usuario abra ciertas páginas web. Para obtener más información, consulta Secuencias de comandos de contenido.
"content_security_policy"
Define restricciones en las secuencias de comandos, los estilos y otros recursos que puede usar una extensión. Para obtener más información, consulta la Política de seguridad del contenido.
"cross_origin_embedder_policy"
Especifica un valor para el encabezado HTTP Cross-Origin-Embedder-Policy, que configura la incorporación de recursos de origen cruzado en una página de extensión.
"cross_origin_opener_policy"
Especifica un valor para el encabezado HTTP Cross-Origin-Opener-Policy, que te permite asegurarte de que una página de extensión de nivel superior no comparta un grupo de contexto de navegación con documentos de origen cruzado.
"declarative_net_request"
Define reglas estáticas para la API de declarativeNetRequest, que permite bloquear y modificar las solicitudes de red.
"default_locale"
Es una cadena que define el idioma predeterminado de una extensión que admite varias configuraciones regionales. Por ejemplo, "en" y "pt_BR". Esta clave es obligatoria en las extensiones localizadas y no se debe usar en extensiones que no estén localizadas. Para obtener más información, consulta Internacionalización.
"devtools_page"
Define las páginas que usan las APIs de DevTools.
"export"
Permite que se exporten recursos desde la extensión. Para obtener más información, consulta Export.
"externally_connectable"
Especifica qué otras páginas y extensiones pueden conectarse a tus extensiones. Para obtener más información, consulta "externally_connectable".
"homepage_url"
Es una cadena que especifica una URL para la página principal de la extensión. Si no se define, la página principal se establece de forma predeterminada en la página de Chrome Web Store de la extensión. Este campo es muy útil si albergas la extensión en tu propio sitio.
"host_permissions"
Enumera las páginas web con las que puede interactuar tu extensión, definidas con patrones de coincidencia de URL. Se solicita el permiso del usuario para estos sitios durante la instalación. Para obtener más información, consulta Permisos del host.
"import"
Permite que se importen recursos a la extensión. Para obtener más información, consulta Importa.
"incognito"
Define cómo se comporta la extensión en el modo Incógnito. Los valores admitidos son "spanning", "split" y "not_allowed". Para obtener más información, consulta Modo Incógnito.
"key"
Especifica el ID de tu extensión para varios casos de uso de desarrollo. Para obtener más información, consulta Clave.
"minimum_chrome_version"
Define la versión más antigua de Chrome que puede instalar tu extensión. El valor debe ser una subcadena de una cadena de versión existente del navegador Chrome, como "107" o "107.0.5304.87". Los usuarios con versiones de Chrome anteriores a la versión mínima ven una advertencia que indica que no es compatible en Chrome Web Store y no pueden instalar tu extensión. Si lo agregas a una extensión existente, los usuarios cuya versión de Chrome sea anterior no recibirán actualizaciones automáticas de tu extensión. Esto incluye a los usuarios empresariales en el modo efímero.
"oauth2"
Permite el uso de un ID de seguridad de OAuth 2.0. El valor de esta clave debe ser un objeto con propiedades "client_id" y "scopes". Para obtener más información, consulta el instructivo de OAuth 2.0.
"omnibox"
Permite que la extensión registre una palabra clave en la barra de direcciones de Chrome. Para obtener más información, consulta Cuadro multifunción.
"optional_host_permissions"
Declara los permisos del host opcionales para tu extensión.
"optional_permissions"
Declara los permisos opcionales para tu extensión.
"options_page"
Especifica una ruta de acceso a un archivo options.html para que la extensión la use como página de opciones. Para obtener más información, consulta Cómo brindar opciones a los usuarios.
"options_ui"
Especifica una ruta de acceso a un archivo HTML que permite que un usuario cambie las opciones de la extensión desde la página Extensiones de Chrome. Para obtener más información, consulta Opciones integradas.
"permissions"
Habilita el uso de APIs de extensión específicas. Consulta Permisos para obtener una explicación general. En las páginas de referencia de las APIs individuales, se enumeran los permisos que requieren.
"requirements"
Enumera las tecnologías necesarias para usar la extensión. Para obtener una lista de los requisitos compatibles, consulta Requisitos.
"sandbox"
Define un conjunto de páginas de extensión que no tienen acceso a las APIs de extensión ni acceso directo a páginas que no están en la zona de pruebas. Para obtener más información, consulta Zona de pruebas.
"short_name"
Es una cadena que contiene una versión abreviada del nombre de la extensión que se usará cuando el espacio para caracteres sea limitado. La longitud máxima es de 12 caracteres. Si no se define, se mostrará una versión truncada de la clave "name".
"side_panel"
Identifica un archivo HTML para mostrarlo en un sidePanel.
"storage"
Declara un esquema JSON para el área de almacenamiento administrado. Para obtener más información, consulta Manifiesto de áreas de almacenamiento.
"tts_engine"
Registra la extensión como un motor de texto a voz. Para obtener más información, consulta la API de ttsEngine.
"update_url"
Es una cadena que contiene la URL de la página de actualizaciones de la extensión. Usa esta clave si albergas tu extensión fuera de Chrome Web Store.
"version_name"
Es una cadena que describe la versión de la extensión. Entre los ejemplos, se incluyen "1.0 beta" y "build rc2". Si no se especifica, el valor de "versión" se muestra en la página de administración de extensiones.
"web_accessible_resources"
Define los archivos dentro de la extensión a los que pueden acceder las páginas web o otras extensiones. Para obtener más información, consulta Recursos accesibles a través de la Web.

Teclas opcionales de ChromeOS

"file_browser_handlers"
Proporciona acceso a la API de fileBrowserHandler, que permite que las extensiones accedan al navegador de archivos de ChromeOS.
"file_handlers"
Especifica los tipos de archivos que las extensiones de ChromeOS pueden controlar. Para obtener más información, consulta los siguientes artículos:file_handlers.
"file_system_provider_capabilities"
Permite el acceso a la API de fileSystemProvider, que permite que las extensiones creen sistemas de archivos que ChromeOS pueda usar.
"input_components"
Permite el uso de la API de Input Method Editor. Para obtener más información, consulta input_components.