Format du fichier manifeste

Chaque extension doit disposer d'un fichier manifest.json dans son répertoire racine qui répertorie des informations importantes sur la structure et le comportement de cette extension. Cette page explique la structure des fichiers manifestes d'extension et les fonctionnalités qu'ils peuvent inclure.

Exemples

Les exemples de fichiers manifestes suivants montrent la structure de base du fichier manifeste et certaines fonctionnalités couramment utilisées comme point de départ pour créer votre propre fichier manifeste:

Fichier manifeste minimal

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

Enregistrer un script de contenu

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

Injecter un script de contenu

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

Panneau latéral

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

Clés du fichier manifeste

Voici la liste de toutes les clés de fichier manifeste compatibles.

Clés requises par la plate-forme des extensions

"manifest_version"
Entier spécifiant la version du format de fichier manifeste utilisé par votre extension. La seule valeur acceptée est 3.
"name"
Chaîne identifiant l'extension sur le Chrome Web Store, la boîte de dialogue d'installation et la page "Extensions Chrome" de l'utilisateur (chrome://extensions). La longueur maximale est de 75 caractères. Pour en savoir plus sur l'utilisation de noms spécifiques aux paramètres régionaux, consultez la section Internationalisation.
"version"
Chaîne qui identifie le numéro de version de l'extension. Pour en savoir plus sur le format des numéros de version, consultez la section Version.

Clés requises par le Chrome Web Store

"description"
Chaîne décrivant l'extension à la fois sur le Chrome Web Store et sur la page de gestion des extensions de l'utilisateur. Il ne doit pas dépasser 132 caractères. Pour en savoir plus sur la localisation des descriptions, consultez la page Internationalisation.
"icons"
Une ou plusieurs icônes représentant votre extension Pour en savoir plus sur les bonnes pratiques, consultez la section Icônes.

Clés facultatives

"action"
Définit l'apparence et le comportement de l'icône de l'extension dans la barre d'outils Google. Pour en savoir plus, consultez chrome.action.
"author"
Spécifie l'adresse e-mail du compte utilisé pour créer l'extension.
"background"
Spécifie le fichier JavaScript contenant le service worker de l'extension, qui agit en tant que gestionnaire d'événements. Pour en savoir plus, consultez la section À propos des nœuds de calcul du service d'extension.
"chrome_settings_overrides"
Définit les remplacements pour les paramètres Chrome sélectionnés. Pour en savoir plus, consultez Remplacer les paramètres Chrome.
"chrome_url_overrides"
Définit les forçages pour les pages Chrome par défaut. Pour en savoir plus, consultez Remplacer les pages Chrome.
"commands"
Définit les raccourcis clavier dans l'extension. Pour en savoir plus, consultez chrome.commands.
"content_scripts"
Spécifie les fichiers JavaScript ou CSS à utiliser lorsque l'utilisateur ouvre certaines pages Web. Pour en savoir plus, consultez Scripts de contenu.
"content_security_policy"
Définit les restrictions sur les scripts, les styles et les autres ressources qu'une extension peut utiliser. Pour en savoir plus, consultez Règle concernant la sécurité du contenu.
"cross_origin_embedder_policy"
Spécifie une valeur pour l'en-tête HTTP Cross-Origin-Embedder-Policy, qui configure l'intégration des ressources multi-origines dans une page d'extension.
"cross_origin_opener_policy"
Spécifie une valeur pour l'en-tête HTTP Cross-Origin-Opener-Policy, ce qui vous permet de vous assurer qu'une page d'extension de premier niveau ne partage pas de groupe de contexte de navigation avec des documents multi-origines.
"declarative_net_request"
Définit des règles statiques pour l'API declarativeNetRequest, qui permet de bloquer et de modifier des requêtes réseau.
"default_locale"
Chaîne définissant la langue par défaut d'une extension compatible avec plusieurs paramètres régionaux. Exemples : "en" et "pt_BR". Cette clé est requise dans les extensions localisées et ne doit pas être utilisée dans les extensions qui ne le sont pas. Pour en savoir plus, consultez la page Internationalisation.
"devtools_page"
Définit les pages qui utilisent les API DevTools.
"export"
Permet l'exportation des ressources depuis l'extension. Pour en savoir plus, consultez la section Exporter.
"externally_connectable"
Indique les autres pages et extensions qui peuvent être connectées à vos extensions. Pour en savoir plus, consultez "externally_connectable".
"homepage_url"
Chaîne spécifiant une URL pour la page d'accueil de l'extension. Si cet attribut n'est pas défini, la page d'accueil par défaut est la page Chrome Web Store de l'extension. Ce champ est particulièrement utile si vous hébergez l'extension sur votre propre site.
"host_permissions"
Indique les pages Web avec lesquelles votre extension est autorisée à interagir, définies à l'aide de formats de correspondance d'URL. L'autorisation de l'utilisateur pour ces sites est demandée au moment de l'installation. Pour en savoir plus, consultez la section Autorisations d'hôte.
"import"
Permet d'importer des ressources dans l'extension. Pour en savoir plus, consultez la section Importer.
"incognito"
Définit le comportement de l'extension en mode navigation privée. Les valeurs acceptées sont "spanning", "split" et "not_allowed". Pour en savoir plus, consultez la section Navigation privée.
"key"
Spécifie l'ID de votre extension pour différents cas d'utilisation de développement. Pour en savoir plus, consultez la section Clé.
"minimum_chrome_version"
Définit la version de Chrome la plus ancienne pouvant installer votre extension. Cette valeur doit être une sous-chaîne d'une chaîne de version existante du navigateur Chrome, telle que "107" ou "107.0.5304.87". Les utilisateurs disposant de versions de Chrome antérieures à la version minimale voient un avertissement "Non compatible" dans le Chrome Web Store et ne peuvent pas installer votre extension. Si vous l'ajoutez à une extension existante, les utilisateurs dont la version de Chrome est antérieure ne recevront pas les mises à jour automatiques de votre extension. Cela inclut les utilisateurs professionnels en mode éphémère.
"oauth2"
Permet l'utilisation d'un ID de sécurité OAuth 2.0. La valeur de cette clé doit être un objet possédant les propriétés "client_id" et "scopes". Pour en savoir plus, consultez le tutoriel OAuth 2.0.
"omnibox"
Permet à l'extension d'enregistrer un mot clé dans la barre d'adresse de Chrome. Pour en savoir plus, consultez la section omnibox.
"optional_host_permissions"
Déclare des autorisations d'hôte facultatives pour votre extension.
"optional_permissions"
Déclare des autorisations facultatives pour votre extension.
"options_page"
Spécifie un chemin d'accès à un fichier options.html que l'extension utilisera comme page d'options. Pour en savoir plus, consultez la section Proposer des options aux utilisateurs.
"options_ui"
Spécifie un chemin d'accès à un fichier HTML qui permet à un utilisateur de modifier les options d'extension depuis la page des extensions Chrome. Pour en savoir plus, consultez la section Options intégrées.
"permissions"
Permet l'utilisation d'API d'extension spécifiques. Consultez la section Autorisations pour en savoir plus. Les pages de référence des API individuelles répertorient les autorisations dont elles ont besoin.
"requirements"
Dresse la liste des technologies nécessaires à l'utilisation de l'extension. Pour obtenir la liste des exigences compatibles, consultez la section Conditions requises.
"sandbox"
Définit un ensemble de pages d'extension qui n'ont pas accès aux API d'extension ni d'accès direct aux pages hors bac à sable. Pour en savoir plus, consultez la section Bac à sable.
"short_name"
Chaîne contenant une version abrégée du nom de l'extension à utiliser lorsque l'espace de caractères est limité. Il ne doit pas dépasser 12 caractères. Si cette option n'est pas définie, une version tronquée de la clé "name" s'affiche à la place.
"side_panel"
Identifie un fichier HTML à afficher dans un sidePanel.
"storage"
Déclare un schéma JSON pour l'espace de stockage géré. Pour en savoir plus, consultez Fichier manifeste pour les zones de stockage.
"tts_engine"
Enregistre l'extension en tant que moteur de synthèse vocale. Pour en savoir plus, consultez la documentation de l'API ttsEngine.
"update_url"
Chaîne contenant l'URL de la page de mise à jour de l'extension. Utilisez cette clé si vous hébergez votre extension en dehors du Chrome Web Store.
"version_name"
Chaîne décrivant la version de l'extension. Exemples : "1.0 beta" et "build rc2". Si aucune valeur n'est spécifiée, la valeur "version" s'affiche sur la page de gestion des extensions.
"web_accessible_resources"
Définit les fichiers de l'extension accessibles depuis les pages Web ou d'autres extensions. Pour en savoir plus, consultez la page Ressources accessibles sur le Web.

Clés ChromeOS facultatives

"file_browser_handlers"
Fournit l'accès à l'API fileBrowserHandler, qui permet aux extensions d'accéder à l'explorateur de fichiers ChromeOS.
"file_handlers"
Spécifie les types de fichiers que les extensions ChromeOS doivent gérer. Pour en savoir plus, consultez file_handlers.
"file_system_provider_capabilities"
Permet d'accéder à l'API fileSystemProvider, qui permet aux extensions de créer des systèmes de fichiers utilisables par ChromeOS.
"input_components"
Autorise l'utilisation de l'API de l'éditeur de mode de saisie. Pour en savoir plus, consultez input_components.