4141git clone https://github.com/Turtle-Hwan/LinKU.git
4242cd LinKU
4343pnpm install
44+ ```
45+
46+ ### 실행 방법
47+
48+ ``` bash
49+ # 개발 서버 (Hot reload, console 로그 O, 버전 고정)
4450pnpm run dev
51+
52+ # 로컬 빌드 테스트 (console 로그 O, 버전 고정)
53+ pnpm run build:local
54+ # → dist 폴더를 chrome://extensions에 로드
55+
56+ # 프로덕션 빌드 (console 로그 X, 버전 자동 증가)
57+ pnpm run build
4558```
4659
4760- react 환경으로 구성되어 있어 dev로 실행되는 화면이 그대로 적용됩니다.
@@ -62,6 +75,27 @@ pnpm run dev
6275" build:gh-pages" : " tsc -b && vite build --mode gh-pages" ,
6376```
6477
78+ <details >
79+ <summary ><b >환경 변수 설정 (Google Analytics)</b ></summary >
80+
81+ Google Analytics를 사용하기 위해 환경 변수를 설정해야 합니다:
82+
83+ ``` bash
84+ # .env.development 파일 생성
85+ cp .env.development.example .env.development
86+
87+ # .env.development 파일을 열어서 VITE_GA_API_SECRET 값을 입력
88+ ```
89+
90+ ** Google Analytics API Secret 발급 방법:**
91+
92+ 1 . [ Google Analytics] ( https://analytics.google.com/ ) 접속
93+ 2 . Admin → Data Streams → 해당 스트림 선택
94+ 3 . Measurement Protocol API secrets → Create
95+ 4 . 생성된 Secret value를 복사하여 ` .env.development ` 파일에 입력
96+
97+ </details >
98+
6599<details >
66100<summary ><b >Chrome Extension 자동 배포 설정 (For Maintainers)</b ></summary >
67101
@@ -76,20 +110,23 @@ pnpm run dev
76110### 1단계: Google Cloud Console 설정
77111
78112#### 1.1 프로젝트 생성
113+
791141 . [ Google Cloud Console] ( https://console.cloud.google.com/ ) 에 접속
801152 . 상단의 프로젝트 선택 드롭다운 클릭
811163 . "새 프로젝트" 선택
821174 . 프로젝트 이름 입력 (예: ` LinKU Chrome Extension ` )
831185 . "만들기" 클릭
84119
85120#### 1.2 Chrome Web Store API 활성화
121+
861221 . 좌측 메뉴에서 ** "API 및 서비스" > "라이브러리"** 선택
871232 . 검색창에 ` Chrome Web Store API ` 입력
881243 . "Chrome Web Store API" 클릭
891254 . ** "사용"** 버튼 클릭
90126 - ⚠️ 이 단계를 건너뛰면 나중에 API 호출 시 오류 발생!
91127
92128#### 1.3 OAuth 동의 화면 설정
129+
931301 . 좌측 메뉴에서 ** "API 및 서비스" > "OAuth 동의 화면"** 선택
941312 . ** User Type: "External"** 선택 후 "만들기" 클릭
951323 . ** 앱 정보** 입력:
@@ -106,6 +143,7 @@ pnpm run dev
1061437 . "저장 후 계속" 클릭
107144
108145#### 1.4 OAuth 클라이언트 ID 생성
146+
1091471 . 좌측 메뉴에서 ** "API 및 서비스" > "사용자 인증 정보"** 선택
1101482 . 상단의 ** "+ 사용자 인증 정보 만들기"** 클릭
1111493 . ** "OAuth 클라이언트 ID"** 선택
@@ -118,24 +156,30 @@ pnpm run dev
118156### 2단계: OAuth Refresh Token 발급
119157
120158#### 2.1 CLI 도구 실행
159+
121160터미널에서 다음 명령어 실행:
161+
122162``` bash
123163npx chrome-webstore-upload-keys
124164```
125165
126166#### 2.2 인증 정보 입력
167+
127168CLI가 다음을 차례로 요청합니다:
169+
1281701 . ** Client ID** 입력 (1.4 단계에서 복사한 값 붙여넣기)
1291712 . ** Client Secret** 입력 (1.4 단계에서 복사한 값 붙여넣기)
1301723 . ** Extension ID** 입력 (아래 참고)
131173
132174** Extension ID 찾는 방법:**
175+
133176- [ Chrome Web Store Developer Dashboard] ( https://chrome.google.com/webstore/devconsole ) 에서 확장 프로그램 선택
134177- URL의 마지막 부분이 Extension ID입니다
135178- 예: ` https://chrome.google.com/webstore/devconsole/.../fmfbhmifnohhfiblebbdjlioppfppbgh `
136179 → Extension ID: ` fmfbhmifnohhfiblebbdjlioppfppbgh `
137180
138181#### 2.3 브라우저 OAuth 인증
182+
1391831 . CLI가 자동으로 브라우저를 열고 Google 인증 페이지로 이동
1401842 . ** Google 계정 선택** (1.3.6에서 추가한 테스트 사용자 계정)
1411853 . ** "앱이 확인되지 않음"** 경고가 나타날 수 있음:
@@ -148,28 +192,32 @@ CLI가 다음을 차례로 요청합니다:
1481925 . 인증 완료 후 터미널로 돌아가서 ** Refresh Token** 확인 및 복사
149193
150194** ⚠️ "액세스 차단됨: 앱이 테스트 중" 오류 발생 시:**
195+
151196- 1.3.6 단계에서 테스트 사용자를 추가하지 않았거나
152197- 다른 Google 계정으로 로그인한 경우
153198- → Google Cloud Console로 돌아가서 테스트 사용자 추가 후 다시 시도
154199
155200### 3단계: GitHub Secrets 설정
156201
157202#### 3.1 GitHub Repository Settings 접속
203+
1582041 . GitHub 저장소 페이지 접속
1592052 . 상단 메뉴에서 ** "Settings"** 클릭
1602063 . 좌측 메뉴에서 ** "Secrets and variables" > "Actions"** 선택
161207
162208#### 3.2 Secrets 추가
209+
163210** "New repository secret"** 버튼을 클릭하여 다음 4개의 secret을 차례로 추가:
164211
165- | Name | Value |
166- | ------| -------|
167- | ` CHROME_EXTENSION_ID ` | Extension ID (2.2에서 확인한 값) |
168- | ` CHROME_CLIENT_ID ` | OAuth Client ID (1.4에서 복사한 값) |
212+ | Name | Value |
213+ | ---------------------- | --------------------------------------- |
214+ | ` CHROME_EXTENSION_ID ` | Extension ID (2.2에서 확인한 값) |
215+ | ` CHROME_CLIENT_ID ` | OAuth Client ID (1.4에서 복사한 값) |
169216| ` CHROME_CLIENT_SECRET ` | OAuth Client Secret (1.4에서 복사한 값) |
170- | ` CHROME_REFRESH_TOKEN ` | Refresh Token (2.3에서 복사한 값) |
217+ | ` CHROME_REFRESH_TOKEN ` | Refresh Token (2.3에서 복사한 값) |
171218
172219** 각 secret 추가 방법:**
220+
1732211 . ** Name** 필드에 위 표의 이름 입력 (대소문자 정확히)
1742222 . ** Secret** 필드에 해당 값 붙여넣기
1752233 . ** "Add secret"** 클릭
@@ -178,11 +226,13 @@ CLI가 다음을 차례로 요청합니다:
178226### 4단계: 배포 확인 및 심사 제출
179227
180228#### 4.1 자동 배포 확인
229+
1812301 . ` main ` 브랜치에 코드 push/merge
1822312 . GitHub 저장소의 ** "Actions"** 탭에서 workflow 실행 확인
1832323 . "Upload Chrome Extension Draft" workflow가 성공적으로 완료되면 ✅
184233
185234#### 4.2 수동 심사 제출
235+
1862361 . [ Chrome Web Store Developer Dashboard] ( https://chrome.google.com/webstore/devconsole ) 접속
1872372 . 확장 프로그램 선택
1882383 . 좌측 메뉴에서 ** "패키지"** 탭 확인
@@ -191,6 +241,7 @@ CLI가 다음을 차례로 요청합니다:
1912416 . 심사 완료까지 대기 (보통 24시간~ 3일 소요)
192242
193243** 💡 Tip:**
244+
194245- 심사 중일 때 새 커밋이 발생해도 draft만 업데이트되므로 안전
195246- 심사 완료 후 Developer Dashboard에서 수동으로 배포 가능
196247
0 commit comments