Moduły udostępnione

Moduły współdzielone to zbiory zasobów bez uprawnień, które można udostępniać między rozszerzeniami. Typowe zastosowania modułów udostępnionych:

  • Jako interfejs API. Możesz dystrybuować moduł współużytkowany, który może udostępniać kod HTML, JS i inne zasoby w celu zapewnienia interfejsu API, który można aktualizować niezależnie od zależnych od niego rozszerzeń.
  • jako optymalizacja pobierania. Moduł udostępniony zawiera zasoby używane przez wiele rozszerzeń. Jest pobierana raz, przy pierwszym instalowaniu rozszerzenia zależnego.

Plik manifestu

Moduły współdzielone są używane w 2 polach manifestu: "export" i "import".

Eksportuj

Pole export wskazuje, że rozszerzenie jest modułem współdzielonym, który eksportuje swoje zasoby:

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

Importuj

Pole import jest używane przez rozszerzenia i aplikacje do deklarowania, że zależą one od zasobów z poszczególnych modułów współdzielonych:

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

Uzyskiwanie dostępu do zasobów

Dostęp do zasobów modułu współdzielonego można uzyskać za pomocą zarezerwowanej ścieżki _modules/SHARED_MODULE_ID w katalogu głównym rozszerzenia do importowania. Aby na przykład uwzględnić skrypt foo.js z modułu współdzielonego o identyfikatorze „cccccccccccccccccc”, użyj tej ścieżki z katalogu głównego rozszerzenia:

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

Jeśli rozszerzenie importujące ma identyfikator „aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”, pełny adres URL zasobów w module współdzielonym to:

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

Ponieważ zasoby z modułów współdzielonych są nakładane na źródło importu rozszerzenia, wszystkie uprawnienia przyznane rozszerzeniu do importowania są dostępne do kodowania w modułach współdzielonych. Ponadto moduł współużytkowany może uzyskiwać dostęp do zasobów w rozszerzeniu importowym za pomocą ścieżek bezwzględnych.

Instalowanie / odinstalowywanie

Moduł udostępniony jest automatycznie instalowany ze sklepu Chrome Web Store, gdy jest to wymagane przez zależne rozszerzenie, i automatycznie odinstalowywany, gdy ostatnie rozszerzenie, które się do niego odwołuje, jest odinstalowane. Aby przesłać rozszerzenie, które korzysta z modułu współdzielonego, należy go opublikować w Chrome Web Store, a jego lista dozwolonych nie może ograniczać możliwości korzystania z tego rozszerzenia przez listę dozwolonych.

W trakcie programowania musisz ręcznie zainstalować wszystkie moduły udostępnione, z których korzysta Twoje rozszerzenie. Automatyczne instalacje nie mają miejsca w przypadku rozszerzeń ładowanych z innego urządzenia lub wczytywanych jako rozszerzenia bez pakietu. W przypadku zainstalowanych lokalnie i bez pakietu modułów współdzielonych użyj pola klucz, aby mieć pewność, że moduły udostępnione używają prawidłowych identyfikatorów.