Freigegebene Module

Freigegebene Module sind berechtigungslose Sammlungen von Ressourcen, die von Erweiterungen gemeinsam genutzt werden können. Gängige Einsatzmöglichkeiten von freigegebenen Modulen:

  • Als API Sie können ein freigegebenes Modul verteilen, das HTML, JS und andere Ressourcen bereitstellen kann, um eine API bereitzustellen, die unabhängig von den davon abhängigen Erweiterungen aktualisiert werden kann.
  • Zur Download-Optimierung. Das freigegebene Modul enthält allgemeine Ressourcen, die von vielen Erweiterungen verwendet werden. Sie wird einmal heruntergeladen, wenn zum ersten Mal eine abhängige Erweiterung installiert wird.

Manifest

Freigegebene Module werden durch zwei Manifestfelder verwendet: "export" und "import".

Exportieren

Das Feld export zeigt an, dass eine Erweiterung ein freigegebenes Modul ist, 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
}

Importieren

Mit dem Feld import wird von Erweiterungen und Apps deklariert, dass sie von den Ressourcen bestimmter freigegebener Module abhängig sind:

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

Auf Ressourcen zugreifen

Auf freigegebene Modulressourcen kann über einen reservierten Pfad _modules/SHARED_MODULE_ID im Stammverzeichnis Ihrer Importerweiterung zugegriffen werden. Wenn Sie beispielsweise das Skript foo.js aus einem freigegebenen Modul mit der ID "cccccccccccccccccccccccccccc" einbinden möchten, verwenden Sie diesen Pfad vom Stammverzeichnis der Erweiterung:

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

Wenn die importierende Erweiterung die ID "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" hat, lautet die vollständige URL zu Ressourcen im freigegebenen Modul:

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

Da Ressourcen aus freigegebenen Modulen dem Ursprung der Importerweiterung überlagert werden, stehen alle Berechtigungen, die der Importerweiterung gewährt werden, für den Code in freigegebenen Modulen zur Verfügung. Außerdem kann das freigegebene Modul über absolute Pfade auf Ressourcen in der Importerweiterung zugreifen.

Installieren / deinstallieren

Ein freigegebenes Modul wird automatisch aus dem Chrome Web Store installiert, wenn es von einer abhängigen Erweiterung benötigt wird. Es wird automatisch deinstalliert, wenn die letzte Erweiterung, die darauf verweist, deinstalliert wird. Zum Hochladen einer Erweiterung, die ein freigegebenes Modul verwendet, muss dieses im Chrome Web Store veröffentlicht werden und die Verwendung des freigegebenen Moduls darf nicht durch ihre Zulassungsliste eingeschränkt werden.

Während der Entwicklung müssen Sie alle freigegebenen Module, die Ihre Erweiterung verwendet, manuell installieren. Erweiterungen, die per Sideload oder als entpackte Erweiterungen geladen wurden, werden nicht automatisch installiert. Bei lokal installierten, entpackten freigegebenen Modulen müssen Sie das Feld key verwenden, damit die freigegebenen Module die richtigen IDs verwenden.