Módulos compartidos

Los módulos compartidos son colecciones de recursos sin permisos que pueden compartirse entre otras y apps de Google. Estos son los usos comunes de los módulos compartidos:

  • Como una API Puedes distribuir un módulo compartido que proporcione HTML, JS y otras fuentes a proporcionan una API que se puede actualizar independientemente de las extensiones que dependen de ella. Puede ser útil para entornos de ejecución y motores de juegos, donde las apps suelen ser cargas útiles de datos más pequeñas que se ejecutan en el código del módulo compartido.
  • Como una optimización de descarga. El módulo compartido contiene recursos comunes que usan muchas extensiones. Se descarga una vez, la primera vez que se instala una extensión dependiente.

Manifiesto

Los módulos compartidos se usan a través de dos campos de manifiesto: exportación e importación.

El campo export indica que una extensión es un módulo compartido que exporta sus 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
}

Las extensiones y apps usan el campo import para declarar que dependen de los recursos de módulos compartidos específicos:

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

Acceso a recursos

Se accede a los recursos de módulos compartidos a través de una ruta reservada _modules/SHARED_MODULE_ID en la raíz de la extensión importada. Por ejemplo, incluir la secuencia de comandos "foo.js" desde un módulo compartido con ID "cccccccccccccccccccccccccccccccc", usa esta ruta desde la raíz de tu extensión:

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

Si la extensión importada tiene el ID “aaaaaaaaaaaaaaaaaaaaaaaaaaaaa”, entonces la URL completa de los recursos del módulo compartido es:

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

Ten en cuenta que los recursos de los módulos compartidos se superponen en el origen de la importación extensión, todos los privilegios otorgados a la extensión importada estarán disponibles para codificar en la configuración Módulos. Además, el módulo compartido puede acceder a los recursos en la extensión que importa mediante el uso de absolutas.

Instalar o desinstalar

Cuando un dependiente lo necesita, se instala automáticamente un módulo compartido desde Chrome Web Store y se desinstala automáticamente cuando se desinstala la última extensión a la que hace referencia. Para subir una extensión que usa un módulo compartido, este debe publicarse en Chrome Web Store y la extensión no debe tener restricciones en el uso del Módulo compartido por parte de su lista de entidades permitidas.

Durante el desarrollo, tendrás que instalar manualmente los módulos compartidos que use tu extensión. Las instalaciones automáticas no se realizan para las extensiones que se transfieren o se cargan como desempaquetadas extensiones. Para módulos compartidos desempaquetados y instalados localmente, debes usar el campo key para asegúrate de que los módulos compartidos usen los IDs correctos.