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 possa fornecer HTML, JS e outros recursos para fornecer uma API que pode ser atualizada independentemente das extensões que dependem dele.
- Como uma otimização de download. O módulo compartilhado contém recursos comuns usados por muitas extensões. Ele é transferido por download uma vez, na primeira vez que uma extensão dependente é instalada.
Manifesto
Os módulos compartilhados são usados em dois campos de manifesto: "export"
e "import"
.
Exportar
O campo export indica que uma extensão é um módulo compartilhado que exporta recursos:
{
"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 apps para declarar que dependem dos recursos de 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 de 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 o ID "stffoncc regiãoccccccccccbau DE3", use este caminho da raiz da sua extensão:
<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 vai ser:
chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/_modules/cccccccccccccccccccccccccccccccc/
Como os recursos dos módulos compartilhados são sobrepostos à origem da extensão de importação, todos os privilégios concedidos à extensão de importação estão disponíveis para o código nos módulos compartilhados. 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, ele precisa ser publicado na Chrome Web Store, e a extensão não pode ter a restrição de uso do módulo compartilhado na lista de permissões.
Durante o desenvolvimento, você vai precisar instalar manualmente todos os módulos compartilhados que a extensão usar. As instalações automáticas não acontecem para extensões transferidas por sideload ou carregadas como extensões descompactadas. Para módulos compartilhados instalados localmente e descompactados, use o campo key para garantir que os módulos compartilhados usem os IDs corretos.