Total: Today: Yesterday:
연구소/Chrome Extension | 2016. 4. 1. 20:09 | Posted by 자수씨

본 포스트는 크롬 익스텐션 개발자 페이지(https://developer.chrome.com/extensions/overview)를 토대로 작성되었습니다.


그냥 공부하는 차원에서 개발자스러운 번역 중...


파일


각 익스텐션은 다음의 파일들을 가지고 있다.

  • manifest file
  • 하나 이상의 HTML files (익스텐션이 테마가 아닐 경우)
  • 옵션: 하나 이상의 JavaScript files
  • 옵션: 확장에 필요로하는 파일들 (이미지 같은)

익스텐션에 작업을 하는 동안에는 모든 파일들을 단일 폴더에 넣는다. 익스텐션을 배포할 때는 특수한 ZIP 파일(.crx 확장자를 갖는)로 컨텐츠 폴더를 패치징한다. 크롬 개발자 대시보드를 통해 익스텐션을 업로드하면, .crx 파일이 생성된다. 배포에 대한 자세한 사항은 호스팅 항목을 참조한다.




파일 참조


익스텐션에는 아무파일이나 넣을 수 있지만, 어떻게 사용할 수 있을까? 대개, 그냥 평범한 HTML 페이지에 상대 주소(URL)을 이용하여 파일을 참조할 수 있다. 아래는 images 폴더 안에 있는 파일 이름이 myimage.png 를 참조하는 예제이다.


<img src="images/myimage.png">



크롬 디버거를 이용하면 익스텐션 안에 있는 모든 파일들을 절대 주소(URL)로 접근이 가능하다.


chrome-extension://<extensionID>/<pathToFile>


URL 에서 <extensionID> 는 익스텐션 시스템에서 각 익스텐션마다 생성된 고유의 식별자이다. "chrome://extensions" 에 접속하면 로드된 모든 익스텐션의 ID 를 확인할 수 있다. <pathToFile> 은 익스텐션의 최상위 폴더에서 부터의 위치(상대주소)이다.



개발 중(패키징 전)에는 익스텐션 아이디가 변경될 수 있다. 특별하게 압축이 해제된 익스텐션의 아이디는 다른 디렉토리에서 로드하게 되면 변경될 수 있다. 개발 중에 ID 가 필요하다면 하드코딩을 막기위해 "@@extension_id" 라는 사전정의된 메시지를 이용할 수 있다.



익스텐션을 패키징 할 때(일반적으로 대시보드에 업로드 시), 익스텐션은 영속적인 ID 를 가지게 되며, 이 ID 는 익스텐션이 업데이트 되더라도 동일하게 유지된다. 한번 생성된 ID 는 영속적이며, "@@extension_id" 를 통해 실제 ID 를 사용할 수 있다.




The manifest file


manifest 파일은 "manifest.json" 에 작성되며, 대부분 중요한 파일과 익스텐션이 할 수 있는 범위와 같은 정보를 제공한다. "google.com" 의 정보를 사용하는 브라우저 액션에 대한 일반적인 manifest 파일의 예는 아래와 같다.


{

  "name": "My Extension",

  "version": "2.1",

  "description": "Gets information from Google.",

  "icons": { "128": "icon_128.png" },

  "background": {

    "persistent": false,

    "scripts": ["bg.js"]

  },

  "permissions": ["http://*.google.com/", "https://*.google.com/"],

  "browser_action": {

    "default_title": "",

    "default_icon": "icon_19.png",

    "default_popup": "popup.html"

  }

}



자세한 내용은 Manifest 파일을 참고하길 바란다.