공유 모듈은 다른 확장 프로그램과 앱 간에 공유할 수 있는 권한이 없는 리소스 모음입니다. 공유 모듈의 일반적인 용도는 다음과 같습니다.
- API로 HTML, JS, 기타 소스를 제공할 수 있는 공유 모듈을 배포하여 이 모듈에 종속된 확장과 독립적으로 업데이트할 수 있는 API를 제공할 수 있습니다. 이는 앱이 공유 모듈의 코드에서 실행되는 데이터의 더 작은 페이로드인 런타임 및 게임 엔진에 유용할 수 있습니다.
- 다운로드 최적화로 공유 모듈에는 여러 확장 프로그램에서 사용하는 공통 리소스가 포함되어 있습니다. 종속 확장 프로그램이 처음 설치될 때 한 번 다운로드됩니다.
매니페스트
공유 모듈은 두 개의 매니페스트 필드(내보내기 및 가져오기)를 통해 사용됩니다.
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가 'cccccccccccccccccccc
<script src="_modules/cccccccccccccccccccccccccccccccc/foo.js">
가져오기 확장 프로그램의 ID가 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa'인 경우 공유 모듈의 리소스 전체 URL은 다음과 같습니다.
chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/_modules/cccccccccccccccccccccccccccccccc/
공유 모듈의 리소스는 가져오기 확장 프로그램의 출처에 오버레이되므로 가져오기 확장 프로그램에 부여된 모든 권한은 공유 모듈의 코드에 사용할 수 있습니다. 또한 공유 모듈은 절대 경로를 사용하여 확장 프로그램 가져오기의 리소스에 액세스할 수 있습니다.
설치 / 제거
공유 모듈은 종속 확장 프로그램에서 필요할 때 Chrome 웹 스토어에서 자동으로 설치되며, 모듈을 참조하는 마지막 확장 프로그램이 제거될 때 자동으로 제거됩니다. 공유 모듈을 사용하는 확장 프로그램을 업로드하려면 공유 모듈을 Chrome 웹 스토어에 게시해야 하고 확장 프로그램의 허용 목록으로 공유 모듈 사용이 제한되어서는 안 됩니다.
개발 중에는 확장 프로그램에서 사용하는 공유 모듈을 수동으로 설치해야 합니다. 사이드로드되거나 압축해제된 확장 프로그램으로 로드된 확장 프로그램의 경우 자동 설치가 발생하지 않습니다. 로컬에 설치되고 압축해제된 공유 모듈의 경우 키 필드를 사용하여 공유 모듈이 올바른 ID를 사용하는지 확인해야 합니다.