|
11 | 11 | ``` |
12 | 12 |
|
13 | 13 | - 로그인되어 있지 않다면: `npm login` |
| 14 | + - **2FA가 활성화된 조직의 경우:** Granular Access Token 사용 권장 (아래 "2단계 인증 오류" 참조) |
14 | 15 |
|
15 | 16 | 2. **프로젝트 루트로 이동** |
16 | 17 |
|
@@ -138,7 +139,125 @@ npm error 404 Not Found - You do not have permission to access it. |
138 | 139 | - `npm login`으로 재로그인 |
139 | 140 | - npm 조직 권한 확인 (https://www.npmjs.com/org/mash-up-web-toolkit) |
140 | 141 |
|
141 | | -### 3. Changeset 파일 누락 |
| 142 | +### 3. 2단계 인증 (2FA) 오류 |
| 143 | + |
| 144 | +``` |
| 145 | +npm error 403 Two-factor authentication or granular access token with bypass 2fa enabled is required to publish packages. |
| 146 | +``` |
| 147 | + |
| 148 | +**해결 방법:** |
| 149 | + |
| 150 | +**방법 1: Granular Access Token 사용 (권장)** |
| 151 | + |
| 152 | +1. npm 웹사이트에서 토큰 생성: |
| 153 | + |
| 154 | + - https://www.npmjs.com/settings/[사용자명]/tokens 접속 |
| 155 | + - "Generate New Token" → "Granular Access Token" 선택 |
| 156 | + - 권한: `Publish` 선택 |
| 157 | + - 조직: `mash-up-web-toolkit` 선택 |
| 158 | + - "Bypass 2FA" 옵션 활성화 (가능한 경우) |
| 159 | + |
| 160 | +2. 토큰을 `.npmrc` 파일에 설정: |
| 161 | + |
| 162 | + ```bash |
| 163 | + echo "//registry.npmjs.org/:_authToken=YOUR_TOKEN_HERE" >> .npmrc |
| 164 | + ``` |
| 165 | + |
| 166 | +3. 또는 환경 변수로 설정: |
| 167 | + ```bash |
| 168 | + export NPM_TOKEN=YOUR_TOKEN_HERE |
| 169 | + ``` |
| 170 | + |
| 171 | +**방법 2: `--otp` 옵션 사용 (간단한 방법)** |
| 172 | + |
| 173 | +배포할 때마다 2FA 코드를 직접 입력: |
| 174 | + |
| 175 | +```bash |
| 176 | +# 개별 패키지 배포 시 |
| 177 | +cd packages/cli/generate-api-config |
| 178 | +pnpm publish --otp=123456 --access public |
| 179 | + |
| 180 | +# 또는 전체 배포 스크립트 수정 필요 없이 직접 실행 |
| 181 | +npm publish --otp=123456 --access public |
| 182 | +``` |
| 183 | + |
| 184 | +**단점:** 매번 2FA 코드를 입력해야 함 |
| 185 | + |
| 186 | +**방법 3: npm 재로그인 (세션 유지)** |
| 187 | + |
| 188 | +1. npm 재로그인 (2FA 코드 입력): |
| 189 | + |
| 190 | + ```bash |
| 191 | + npm login |
| 192 | + ``` |
| 193 | + |
| 194 | + - 이메일, 비밀번호, 2FA 코드 입력 |
| 195 | + - 세션이 유지되는 동안 배포 가능 |
| 196 | + |
| 197 | +2. 배포: |
| 198 | + ```bash |
| 199 | + pnpm publish:all |
| 200 | + ``` |
| 201 | + |
| 202 | +**단점:** 세션이 만료되면 다시 로그인 필요 |
| 203 | + |
| 204 | +**방법 4: npm 계정에 2FA 활성화** |
| 205 | + |
| 206 | +1. npm 웹사이트에서 2FA 활성화: |
| 207 | + |
| 208 | + - https://www.npmjs.com/settings/[사용자명]/profile 접속 |
| 209 | + - "Two-Factor Authentication" 활성화 |
| 210 | + |
| 211 | +2. 배포 시 2FA 코드 입력 |
| 212 | + |
| 213 | +### 4. Git Unclean Working Tree 오류 |
| 214 | + |
| 215 | +``` |
| 216 | +ERR_PNPM_GIT_UNCLEAN Unclean working tree. Commit or stash changes first. |
| 217 | +``` |
| 218 | + |
| 219 | +**해결 방법:** |
| 220 | + |
| 221 | +**방법 1: 변경사항 커밋 (권장)** |
| 222 | + |
| 223 | +```bash |
| 224 | +# 변경사항 확인 |
| 225 | +git status |
| 226 | + |
| 227 | +# 변경사항 커밋 |
| 228 | +git add . |
| 229 | +git commit -m "chore: update deploy guide and npmrc" |
| 230 | +git push origin main |
| 231 | + |
| 232 | +# 배포 재시도 |
| 233 | +pnpm publish:all |
| 234 | +``` |
| 235 | + |
| 236 | +**방법 2: 변경사항 Stash (임시 저장)** |
| 237 | + |
| 238 | +```bash |
| 239 | +# 변경사항 임시 저장 |
| 240 | +git stash |
| 241 | + |
| 242 | +# 배포 |
| 243 | +pnpm publish:all |
| 244 | + |
| 245 | +# 변경사항 복원 (필요한 경우) |
| 246 | +git stash pop |
| 247 | +``` |
| 248 | + |
| 249 | +**방법 3: Git 체크 비활성화 (비권장)** |
| 250 | + |
| 251 | +```bash |
| 252 | +# 개별 패키지 배포 시 |
| 253 | +pnpm publish --no-git-checks --access public |
| 254 | + |
| 255 | +# 또는 package.json의 publish 스크립트에 --no-git-checks 추가 |
| 256 | +``` |
| 257 | + |
| 258 | +**참고:** `.npmrc` 파일은 이미 `.gitignore`에 포함되어 있어 Git에 커밋되지 않습니다. |
| 259 | + |
| 260 | +### 5. Changeset 파일 누락 |
142 | 261 |
|
143 | 262 | 배포 전에 반드시 `pnpm changeset`을 실행하여 변경사항을 문서화해야 합니다. |
144 | 263 |
|
|
0 commit comments