Overview
Google Chrome Extension 개발 후 배포하는 방법에 대해서 알아본다.
Google Chrome Extension이란?
Google Chrome Extension은 Chrome 웹 브라우저의 기능을 확장하거나 사용자 경험을 개선하기 위해 설계된 소프트웨어 프로그램이다. 이 확장 프로그램은 사용자가 브라우저에서 추가적인 기능을 손쉽게 활용할 수 있도록 한다.
Google Chrome Extension의 구성
Google Chrome Extension의 주요 구성파일은 아래와 같다.
my-extension/
│
├── manifest.json # Configuration file
├── background.js # Background script
├── content.js # Content script
├── popup.html # Popup interface
├── popup.js # Logic for popup
├── options.html # Options page
├── options.js # Logic for options
├── icon.png # Extension icon
├── styles.css # Styles for popup or options
`manifest.json`
- 확장 프로그램의 메타데이터 및 동작을 정의하는 핵심 구성 파일이다.
{
"manifest_version": 3, // Specifies the extension version (2 or 3; 3 is the latest).
"name": "My Chrome Extension", // Name of the extension.
"version": "1.0", // Version of the extension.
"description": "A sample extension", // Brief description of the extension.
"permissions": ["storage"], // Permissions required (e.g., storage, tabs).
"action": {
"default_popup": "popup.html", // Popup interface shown when the extension icon is clicked.
"default_icon": "icon.png" // Icon for the extension.
},
"background": {
"service_worker": "background.js" // Background script for persistent operations.
},
"content_scripts": [
{
"matches": ["https://*.example.com/*"], // Pages where the content script is injected.
"js": ["content.js"] // Content script file.
}
]
}
Background Scripts
- 일반적으로 `Background.js` 로 정의된다.
- 장기 실행 작업, 이벤트 관리 및 백그라운드에서 확장 로직 처리에 사용돤다.
chrome.runtime.onInstalled.addListener(() => {
console.log("Extension installed!");
});
Content Scripts
- 일반적으로 'content.js'로 정의된다.
- 웹페이지의 컨텍스트에서 실행되고 페이지의 DOM과 직접 상호작용한다.
document.body.style.backgroundColor = "yellow"; // Changes the background color of the page.
팝업 HTML
- 일반적으로 관련 CSS 및 JavaScript가 포함된 `popup.html` 로 정의된다.
- 확장 프로그램 아이콘을 클릭했을 때 나타나는 UI를 정의한다.
<!DOCTYPE html>
<html>
<head>
<title>Popup</title>
<script src="popup.js"></script>
</head>
<body>
<h1>Extension Popup</h1>
<button id="myButton">Click Me</button>
</body>
</html>
옵션 페이지
- 일반적으로 `options.html` 및 `options.js`
- 사용자가 확장 설정을 구성할 수 있다.
- `options_page` 필드 아래의 `manifest.json` 파일이다.
{
"options_page": "options.html"
}
Asset(아이콘, 이미지 등)
- `icon.png` 와 같은 모든 이미지 파일이다.
- UI의 확장 아이콘 및 시각적 요소에 사용된다.
기타 지원 파일
- CSS 파일: 스타일 팝업, 옵션 또는 콘텐츠 스크립트 인터페이스용이다.
- JavaScript 모듈: 모듈식 기능을 위한 재사용 가능한 추가 스크립트이다.
Google Chrome Extension 개발
- https://github.com/somaz94/dev-toolkit-google-extension
- https://github.com/somaz94/qrify-google-extension
간단하게 2개의 Extension을 개발해 보았다. 자세한 내용은 Github를 참고하길 바란다.
개발하면서 기능을 테스트 하는 방법에 대해서 설명하려고 한다.
`chrome://extensions/` 해당 링크에서 개발자 모드를 Enable 하면 압축해제된 확장 프로그램을 로드 할 수 있다.
로드를 하게 되면 내가 개발한 Extension을 테스트 해볼 수 있다.
이런식으로 간단하게 QR 코드를 생성하는 Extension을 만들어보았다.
또 하나의 Extension은 JSON, Base64, JWT, URL 값을 Formating, Encoding, Decoding 하는 Extension 이다.
이런식으로 테스트가 끝났다면, 이제 App을 Google 에 등록후에 검토를 받으면 된다.
- 주의할점 개발자 계정 등록 시에 국가에서 한국은 없다. 그 이유는 한국은 판매자 계정으로 전환하지 못한다. 필자는 그래서 미국 주소를 사용해서 계정을 등록했다. 아마 예상하건데, 대한민국의 전자상거래법을 준수하지 못하는 것 같다? 그래서 수익창출을 할 수 없다. 참고하길 바란다.
1. Chrome Web Store Developer Dashboard 접속
https://chrome.google.com/webstore/devconsole
2. 개발자 계정 등록 ($5 일회성 비용)
3. 새 항목 추가
- ZIP 파일 업로드 (프로젝트 전체를 ZIP으로 압축)
- 스토어 등록 정보 입력:
- 설명
- 스크린샷
- 아이콘
- 개인정보 처리방침
- 카테고리 선택
4. 제출 및 검토 대기 (보통 몇 일 소요)
App 등록이 끝났다면 개발자 대시보드에서 검토 중인 App을 확인할 수 있다.
그리고 거부됬을때는 친절하게 이유를 알려준다? Chrome 확장 프로그램은 필요한 최소한의 권한만 요청해야 한다.
따라서 `manifest.json` 파일에서 activeTab 권한을 삭제해주면 된다.
{
"permissions": [
"activeTab", // <- 이 부분을 제거
// 실제 필요한 다른 권한들...
]
}
공개가 된다면 아래의 사진과 같이 공개됨으로 바뀐다.
그리고 Chrome Web Store에서 확인 가능하다.
- https://chromewebstore.google.com/detail/dev-toolkit/docgjoppdhbahapgbemfadlkgchnmecc
- https://chromewebstore.google.com/detail/qrify/lkencifnlcbcfjdpkooejabmgkmdgpee
마무리
간단하게 Google Chrome Extension 을 생성해 보았다. 생각보다 간단하게 생성할 수 있고 AI를 사용해서 비 개발자들도 간단하게 Extension을 만들어 볼 수 있을 것 같다.
Reference
'Open Source Software' 카테고리의 다른 글
Vaultwarden(Bitwarden)이란? (2) | 2024.11.08 |
---|---|
Harbor란? (4) | 2024.10.08 |
Minio란? (Object Storage) (2) | 2024.08.26 |
Habor Robot Account(하버 로봇 계정)란? (0) | 2024.08.21 |
Cephadm-ansible이란? (3) | 2024.02.29 |