Módulos compartilhados

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

  • Como uma API. É possível distribuir um módulo compartilhado que pode fornecer HTML, JS e outra origem para fornecer uma API que pode ser atualizada independentemente das extensões que dependem dele. Isso pode ser útil para ambientes de execução e mecanismos de jogos, em que os apps geralmente são payloads menores de dados executados no código do módulo compartilhado.
  • 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 por dois campos de manifesto: exportação e importação.

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
}

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 código " subffutut locais Isso ponto reg adotado, Essa configuração você lembre: ", use este caminho da raiz da extensão:

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

Se a extensão de importação tiver o ID "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", o URL completo para os recursos no módulo compartilhado será:

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

Observe que, como os recursos de 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 para uma extensão dependente e desinstalado automaticamente quando a última extensão que faz referência a ela é 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 o uso restrito pelo módulo compartilhado pela lista de permissões.

Durante o desenvolvimento, você 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.