Moduli condivisi

I moduli condivisi sono raccolte di risorse senza autorizzazione che possono essere condivise tra estensioni. Gli utilizzi comuni dei moduli condivisi sono:

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

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 è utilizzato da estensioni e app per dichiarare che dipendono dalle risorse di determinati moduli condivisi:

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

Accesso alle risorse

È possibile accedere alle risorse dei moduli condivisi 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 "ccCCCCCCCCCCCCCC Centro all'eccellenza", utilizza questo percorso dalla directory principale dell'estensione:

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

Se l'estensione per l'importazione ha l'ID "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", l'URL completo delle risorse nel modulo condiviso è:

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

Tieni presente che, poiché le risorse dei moduli condivisi sono sovrapposte all'origine dell'estensione di importazione, tutti i privilegi concessi all'estensione di importazione sono disponibili per il codice dei moduli condivisi. 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 viene disinstallato automaticamente quando viene disinstallata l'ultima estensione che la fa riferimento. Per caricare un'estensione che utilizza un Modulo condiviso, quest'ultimo deve essere pubblicato sul Chrome Web Store e l'estensione non deve essere limitata dall'utilizzo del Modulo condiviso dalla relativa lista consentita.

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