Modules partagés

Les modules partagés sont des collections sans autorisation de ressources qui peuvent être partagées entre . 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 et d'autres ressources à fournir une API pouvant être mise à jour indépendamment des extensions qui en dépendent.
  • Pour optimiser les téléchargements. Le module partagé contient des ressources communes utilisées par de nombreuses extensions. Il est téléchargé une fois, la première fois qu'une extension dépendante est installée.

Fichier manifeste

Les modules partagés sont utilisés par le biais de deux champs de 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
}

Importer

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

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

Accéder aux ressources

L'accès aux ressources de modules partagés s'effectue via un chemin d'accès réservé _modules/SHARED_MODULE_ID dans le répertoire racine de votre extension d'importation. Par exemple, pour inclure le script foo.js d'un module partagé avec Identifiant "cccccccccccccccccccccccccccc", utilisez le chemin suivant à partir de la racine de l'extension:

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

Si l'ID de l'extension d'importation est "aaaaaaaaaaaaaaaaaaaaaaaaaaaah (TRANSLATED) : l'URL complète des ressources dans le Module partagé est:

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

Étant donné que les ressources des modules partagés sont superposées à l'origine de l'importation, tous les droits accordés à l'extension d'importation sont disponibles pour le code dans Modules. De plus, le module partagé peut accéder aux ressources de l'extension d'importation en utilisant des chemins absolus.

Installer / Désinstaller

Un module partagé est automatiquement installé à partir du Chrome Web Store lorsqu'une extension dépendante en a besoin et automatiquement désinstallé 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é dans le Chrome Web Store et l'extension ne doivent pas être autorisées à utiliser le Module partagé par son liste d'autorisation.

Pendant le développement, vous devrez installer manuellement les modules partagés utilisés par votre extension. Les installations automatiques ne se produisent pas pour les extensions téléchargées indépendamment ou comme non empaquetées. . Pour les modules partagés installés localement et non empaquetés, vous devez utiliser le champ key pour s'assurer que les modules partagés utilisent les bons ID.