공유 모듈

공유 모듈은 확장 프로그램 간에 공유할 수 있는 권한이 없는 리소스 모음입니다. 공유 모듈의 일반적인 용도는 다음과 같습니다.

  • API로 종속되는 확장 프로그램과 독립적으로 업데이트할 수 있는 API를 제공하기 위해 HTML, JS, 기타 리소스를 제공할 수 있는 공유 모듈을 배포할 수 있습니다.
  • 다운로드 최적화로 공유 모듈에는 많은 확장 프로그램에서 사용하는 공통 리소스가 포함되어 있습니다. 종속 확장 프로그램이 처음 설치될 때 한 번 다운로드됩니다.

매니페스트

공유 모듈은 두 개의 매니페스트 필드 "export""import"를 통해 사용됩니다.

내보내기

export 필드는 확장 프로그램이 리소스를 내보내는 공유 모듈임을 나타냅니다.

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

가져오기

import 필드는 확장 프로그램과 앱에서 특정 공유 모듈의 리소스에 종속된다고 선언하는 데 사용됩니다.

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

리소스 액세스

공유 모듈 리소스는 가져오기 확장 프로그램의 루트에 있는 예약된 경로 _modules/SHARED_MODULE_ID를 통해 액세스합니다. 예를 들어 ID가 'ccccccccccccccccccccccc형 ]) foo.js 스크립트를 포함하려면 확장 프로그램 루트의 다음 경로를 사용합니다.

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

가져오는 확장 프로그램의 ID가 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa'인 경우 공유 모듈의 리소스 전체 URL은 다음과 같습니다.

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

공유 모듈의 리소스는 확장 프로그램 가져오기의 출처에 오버레이되므로 확장 프로그램 가져오기에 부여된 모든 권한은 공유 모듈의 코드에 사용할 수 있습니다. 또한 공유 모듈은 절대 경로를 사용하여 확장 프로그램 가져오기의 리소스에 액세스할 수 있습니다.

설치 / 제거

공유 모듈은 종속 확장 프로그램에서 필요할 때 Chrome 웹 스토어에서 자동으로 설치되며 해당 확장 프로그램을 참조하는 마지막 확장 프로그램이 제거되면 자동으로 제거됩니다. 공유 모듈을 사용하는 확장 프로그램을 업로드하려면 공유 모듈을 Chrome 웹 스토어에 게시해야 하고 확장 프로그램의 허용 목록에 의해 공유 모듈 사용이 제한되어서는 안 됩니다.

개발 중에는 확장 프로그램에서 사용하는 공유 모듈을 수동으로 설치해야 합니다. 사이드로드되거나 압축해제된 확장 프로그램으로 로드된 확장 프로그램에는 자동 설치가 발생하지 않습니다. 로컬에 설치되고 압축해제된 공유 모듈의 경우 key 필드를 사용하여 공유 모듈이 올바른 ID를 사용하는지 확인해야 합니다.