Módulos compartilhados

Os módulos compartilhados são coleções sem permissão de recursos que podem ser compartilhados entre extensões. Os usos comuns dos módulos compartilhados são:

  • Como uma API. Você pode distribuir um módulo compartilhado que pode fornecer HTML, JS e outros recursos para fornecem uma API que pode ser atualizada independentemente das extensões que dependem dela.
  • Como uma otimização de download. O módulo compartilhado contém recursos comuns usados por muitas extensões. O download é feito uma vez, na primeira vez que uma extensão dependente é instalada.

Manifesto

Os módulos compartilhados são usados em dois campos do manifesto: "export" e "import".

Exportar

O campo export indica que uma extensão é um módulo compartilhado que exporta os recursos dele:

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

Importar

O campo import é usado por extensões e aplicativos para declarar que dependem dos recursos da Módulos compartilhados específicos:

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

Como acessar recursos

Os recursos do módulo compartilhado são acessados por um caminho reservado _modules/SHARED_MODULE_ID na raiz da extensão de importação. Por exemplo, para incluir o script foo.js de um módulo compartilhado com ID "ccccfccc mostradoperchestamascociacia", "estabelecimento de cedências",

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

Se a extensão de importação tiver o ID "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", o URL completo dos recursos no módulo compartilhado é:

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

Observe que, como os recursos dos módulos compartilhados são sobrepostos na origem da importação, , todos os privilégios concedidos à extensão de importação estarão disponíveis para código na seção Compartilhados Módulos. Além disso, o módulo compartilhado pode acessar recursos na extensão de importação usando caminhos absolutos.

Instalar / desinstalar

Um módulo compartilhado é instalado automaticamente pela Chrome Web Store quando necessário por uma extensão dependente e desinstalado automaticamente quando a última extensão que faz referência a ele é desinstalada. Para fazer upload de uma extensão que usa um módulo compartilhado, esse módulo precisa ser publicado em na Chrome Web Store, e a extensão não pode ser impedida de usar o Módulo Compartilhado pela na lista de permissões.

Durante o desenvolvimento, você precisará instalar manualmente todos os módulos compartilhados que sua extensão usar. Instalações automáticas não acontecem para extensões carregadas por sideload ou carregadas como descompactadas extensões. Para módulos compartilhados descompactados e instalados localmente, você precisa usar o campo key para garantir que os módulos compartilhados usem os IDs corretos.