Moduli condivisi

I moduli condivisi sono raccolte di risorse senza autorizzazioni che possono essere condivise tra estensioni. Utilizzi comuni dei Moduli condivisi sono:

  • Come API. Puoi distribuire un Modulo condiviso in grado di fornire HTML, JS e altre risorse Fornire un'API che può essere aggiornata indipendentemente dalle estensioni che dipendono da quest'ultima.
  • Come ottimizzazione dei download. Il Modulo condiviso contiene risorse comuni utilizzate da molte estensioni. Viene scaricata una volta, la prima volta che viene installata un'estensione dipendente.

Manifest

I moduli condivisi vengono utilizzati tramite due campi manifest: "export" e "import".

Esporta

Il campo export indica che un'estensione è un modulo condiviso che esporta le proprie risorse:

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

Importa

Il campo import viene utilizzato da estensioni e app per dichiarare che dipendono dalle risorse da specifici Moduli condivisi:

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

Accesso alle risorse

Alle risorse dei moduli condivisi si accede tramite un percorso riservato _modules/SHARED_MODULE_ID nella directory principale dell'estensione di importazione. Ad esempio, per includere lo script foo.js di un modulo condiviso con ID "CcCCCCCCCCCCCCCBCC", utilizza questo percorso dalla directory principale dell'estensione:

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

Se l'ID dell'estensione di importazione è "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", indica l'URL completo delle risorse nel Modulo condiviso è:

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

Nota che poiché le risorse dei moduli condivisi sono sovrapposte all'origine dell'importazione dell'estensione, tutti i privilegi concessi all'estensione di importazione sono disponibili per la codifica in Condiviso Moduli. Inoltre, il modulo condiviso può accedere alle risorse nell'estensione di importazione utilizzando percorsi assoluti,

Installa / disinstalla

Un modulo condiviso viene installato automaticamente dal Chrome Web Store quando richiesto da un'estensione dipendente e disinstallato automaticamente quando viene disinstallata l'ultima estensione che fa riferimento allo stesso. Per caricare un'estensione che utilizza un modulo condiviso, il modulo condiviso deve essere pubblicato in Chrome Web Store e all'estensione non deve essere impedito l'utilizzo del Modulo condiviso dal suo nella lista consentita.

Durante lo sviluppo, dovrai installare manualmente i moduli condivisi utilizzati dalla tua estensione. Le installazioni automatiche non si verificano per le estensioni installate tramite sideload o caricate come non pacchettizzate estensioni. Per i Moduli condivisi installati localmente e non pacchettizzati, devi utilizzare il campo key per assicurarsi che i Moduli condivisi utilizzino gli ID corretti.