Freigegebene Module

Freigegebene Module sind Sammlungen von Ressourcen ohne Berechtigung, die unter anderen Erweiterungen und Apps. Gängige Verwendungszwecke von freigegebenen Modulen sind:

  • Als API. Sie können ein freigegebenes Modul verbreiten, das HTML, JS und andere Quellen bietet, stellen eine API bereit, die unabhängig von den davon abhängigen Erweiterungen aktualisiert werden kann. Dabei kann es sich um nützlich für Laufzeiten und Spiel-Engines, bei denen Apps oft eine kleinere Datennutzlast sind, die auf Code des freigegebenen Moduls.
  • Als Download-Optimierung. Das freigegebene Modul enthält allgemeine Ressourcen, die von vielen Erweiterungen verwendet werden. Sie wird einmal heruntergeladen, wenn eine abhängige Erweiterung zum ersten Mal installiert wird.

Manifest

Freigegebene Module werden über zwei Manifestfelder verwendet: Export und Import.

Das Feld export gibt an, dass es sich bei der Erweiterung um ein freigegebenes Modul handelt, das ihre Ressourcen exportiert:

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

Im Feld import wird für Erweiterungen und Apps angegeben, dass sie von den Ressourcen aus bestimmte freigegebene Module:

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

Auf Ressourcen zugreifen

Auf die Ressourcen des freigegebenen Moduls kann über den reservierten Pfad _modules/SHARED_MODULE_ID im Stammverzeichnis zugegriffen werden der zu importierenden Erweiterung. Um beispielsweise das Skript "foo.js" einzufügen aus einem freigegebenen Modul mit ID „cccccccccccccccccccccccccccccccc“. Verwenden Sie dazu den folgenden Pfad vom Stammverzeichnis Ihrer Erweiterung aus:

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

Wenn die importierende Erweiterung die ID „aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa“ hat, ist die vollständige URL zu den Ressourcen im freigegebenen Modul ist:

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

Da Ressourcen aus freigegebenen Modulen in den Ursprung des Importvorgangs überlagert werden, stehen alle Berechtigungen, die der importierenden Erweiterung gewährt wurden, für den Code in der freigegebenen Erweiterung zur Verfügung. Module. Außerdem kann das freigegebene Modul auf Ressourcen in der Importerweiterung zugreifen, indem es absoluten Pfaden angeben.

Installieren / Deinstallieren

Ein freigegebenes Modul wird automatisch aus dem Chrome Web Store installiert, wenn es von einem abhängigen Erweiterung und automatisch deinstalliert, wenn die letzte Erweiterung, die auf sie verweist, deinstalliert wird. Damit du eine Erweiterung hochladen kannst, die ein freigegebenes Modul verwendet, muss das freigegebene Modul hier veröffentlicht werden der Chrome Web Store und die Erweiterung dürfen nicht durch die auf die Zulassungsliste setzen.

Während der Entwicklung müssen Sie alle freigegebenen Module, die Ihre Erweiterung verwendet, manuell installieren. Erweiterungen, die per Sideload oder entpackt geladen werden, werden nicht automatisch installiert Erweiterungen. Für lokal installierte, entpackte freigegebene Module müssen Sie das Feld key verwenden, um dass die freigegebenen Module die richtigen IDs verwenden.