Modules partagés

Les modules partagés sont des ensembles de ressources sans autorisation qui peuvent être partagés entre les extensions. Voici quelques cas d'utilisation courants des modules partagés:

  • En tant qu'API Vous pouvez distribuer un module partagé pouvant fournir du code HTML, JavaScript ou d'autres ressources afin de fournir une API pouvant être mise à jour indépendamment des extensions qui en dépendent.
  • à des fins d'optimisation des téléchargements. Le module partagé contient des ressources courantes utilisées par de nombreuses extensions. Elle est téléchargée une fois, la première fois qu'une extension dépendante est installée.

Manifest

Les modules partagés sont utilisés via deux champs du fichier manifeste: "export" et "import".

Exporter

Le champ export indique qu'une extension est un module partagé qui exporte ses ressources:

{
  "version": "1.0",
  "name": "My Shared Module",
  "export": {
    // Optional list of extension IDs explicitly allowed to
    // import this Shared Module's resources.  If no allowlist
    // is given, all extensions are allowed to import it.
    "allowlist": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    ]
  }
  // Note: no permissions are allowed in Shared Modules
}

Importation

Le champ import est utilisé par les extensions et les applications pour déclarer qu'elles dépendent des ressources de modules partagés particuliers:

{
  "version": "1.0",
  "name": "My Importing Extension",
  ...
  "import": [
    {"id": "cccccccccccccccccccccccccccccccc"},
    {"id": "dddddddddddddddddddddddddddddddd"
     "minimum_version": "0.5" // optional
    },
  ]
}

Accéder aux ressources

Les ressources de module partagé sont accessibles via un chemin réservé _modules/SHARED_MODULE_ID à la racine de votre extension d'importation. Par exemple, pour inclure le script foo.js à partir d'un module partagé portant l'ID "ccccccccccccccccccccccccccccis", utilisez le chemin d'accès suivant à partir de la racine de votre extension:

<script src="_modules/cccccccccccccccccccccccccccccccc/foo.js">

Si l'extension d'importation porte l'ID "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", l'URL complète des ressources du module partagé est la suivante:

chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/_modules/cccccccccccccccccccccccccccccccc/

Notez que, comme les ressources des modules partagés sont superposées à l'origine de l'extension d'importation, tous les droits accordés à l'extension d'importation sont disponibles pour le code dans les modules partagés. En outre, le module partagé peut accéder aux ressources de l'extension d'importation à l'aide de chemins absolus.

Installer / Désinstaller

Un module partagé est automatiquement installé à partir du Chrome Web Store si une extension dépendante en a besoin. Il est désinstallé automatiquement lorsque la dernière extension qui y fait référence est désinstallée. Pour importer une extension qui utilise un module partagé, celui-ci doit être publié sur le Chrome Web Store et sa liste d'autorisation ne doit pas empêcher l'extension d'utiliser le module partagé.

Pendant le développement, vous devrez installer manuellement tous les modules partagés utilisés par votre extension. Aucune installation automatique n'a lieu pour les extensions téléchargées indépendamment ou chargées en tant qu'extensions non empaquetées. Pour les modules partagés non empaquetés et installés localement, vous devez utiliser le champ key pour vous assurer que les modules partagés utilisent les bons ID.