Modules partagés

Les modules partagés sont des collections sans autorisation de ressources qui peuvent être partagées entre d'autres les extensions et les applications. 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 sources fournir une API pouvant être mise à jour indépendamment des extensions qui en dépendent. Il peut s'agir utiles pour les environnements d'exécution et les moteurs de jeu, où les applications sont souvent de plus petites charges utiles de données exécutées sur le code du Module partagé.
  • 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 dans deux champs de fichier manifeste: l'exportation et l'importation.

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
}

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 en cas de besoin l'extension, puis désinstallée automatiquement lorsque la dernière extension qui y fait référence a été désinstallée. Pour que vous puissiez 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.