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.