Freigegebene Module

Freigegebene Module sind Sammlungen von Ressourcen ohne Berechtigung, die zwischen Erweiterungen. Gängige Verwendungszwecke von freigegebenen Modulen sind:

  • Als API. Sie können ein freigegebenes Modul bereitstellen, das HTML, JS und andere Ressourcen bietet, bieten eine API, die unabhängig von den davon abhängigen Erweiterungen aktualisiert werden kann.
  • 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".

Exportieren

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
}

Importieren

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 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: absoluten Pfaden angeben.

Installieren / Deinstallieren

Ein freigegebenes Modul wird automatisch aus dem Chrome Web Store installiert, wenn es von einer abhängigen Erweiterung benötigt wird, und automatisch deinstalliert, wenn die letzte Erweiterung, die darauf verweist, deinstalliert wird. Zum Hochladen einer Erweiterung, die ein freigegebenes Modul verwendet, muss das freigegebene Modul veröffentlicht werden in 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.