ν”Όλ“œλ‘œ λŒμ•„κ°€κΈ°
Stop Resizing PWA Icons by Hand: I Built a CLI to Automate It in Seconds πŸš€
Dev.toDev.to
Frontend

Stop Resizing PWA Icons by Hand: I Built a CLI to Automate It in Seconds πŸš€

ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžκ°€ PWA μ•„μ΄μ½˜ μˆ˜λ™ 리사이징 μž‘μ—…μ„ μžλ™ν™”ν•˜λŠ” CLI 도ꡬ(pwa-gen) 개발으둜 초기 μ„€μ • μ‹œκ°„ 단좕

Muhammad Dariaz Zidane2026λ…„ 3μ›” 24일5λΆ„beginner

Context

PWA 초기 μ„€μ • μ‹œ λ§ˆμŠ€ν„° 둜고λ₯Ό μ—¬λŸ¬ 해상도(192x192, 512x512, apple-touch-icon, favicon λ“±)둜 μˆ˜λ™μœΌλ‘œ λ¦¬μ‚¬μ΄μ§•ν•˜κ³ , manifest.json을 직접 μž‘μ„±ν•˜λ©° 파일 경둜λ₯Ό 일일이 μ—°κ²°ν•΄μ•Ό ν•˜λŠ” 반볡 μž‘μ—…μ΄ 개발 λͺ¨λ©˜ν…€μ„ μ €ν•΄ν–ˆλ‹€.

Technical Solution

  • sharp 라이브러리λ₯Ό μ‚¬μš©ν•œ 이미지 처리: λ§ˆμŠ€ν„° 이미지λ₯Ό 64x64, 180x180, 192x192, 512x512의 ν‘œμ€€ μ•„μ΄μ½˜ 크기둜 μžλ™ λ³€ν™˜
  • @clack/promptsλ₯Ό ν™œμš©ν•œ λŒ€ν™”ν˜• CLI μΈν„°νŽ˜μ΄μŠ€: μ•± 이름, ν…Œλ§ˆ 컬러, 배경색 등을 λŒ€ν™”ν˜• ν”„λ‘¬ν”„νŠΈλ‘œ μˆ˜μ§‘
  • Maskable μ•„μ΄μ½˜ μžλ™ 생성: Android PWA μ•ˆμ „ μ˜μ—­μ„ κ³ λ €ν•˜μ—¬ 둜고 μΆ•μ†Œ 및 νŒ¨λ”© μžλ™ 적용
  • manifest.json μžλ™ 생성: μˆ˜μ§‘λœ 정보와 μƒμ„±λœ μ•„μ΄μ½˜ 경둜λ₯Ό manifest.json에 μžλ™μœΌλ‘œ μž‘μ„±
  • Public 디렉토리 μžλ™ 감지: ν”„λ‘œμ νŠΈ ꡬ쑰λ₯Ό λΆ„μ„ν•˜μ—¬ 파일 생성 경둜 μžλ™ μ„€μ •
  • Vite ν˜Έν™˜μ„± 지원: vite.config.js/tsμ—μ„œ 독립적인 manifest.json 파일 μ‚¬μš© κ°€λŠ₯ν•˜λ„λ‘ μ„€μ •

Key Takeaway

PWA 초기 μ„€μ •κ³Ό 같은 반볡 κ°€λŠ₯ν•œ μˆ˜λ™ μž‘μ—…μ€ npxλ₯Ό ν†΅ν•œ 독립 μ‹€ν–‰ν˜• CLI λ„κ΅¬λ‘œ μžλ™ν™”ν•˜λ©΄, κ°œλ°œμžκ°€ μ‹€μ œ κΈ°λŠ₯ κ΅¬ν˜„μ— 집쀑할 수 있으며, 였λ₯˜ κ°€λŠ₯성도 λ™μ‹œμ— μ œκ±°ν•  수 μžˆλ‹€.


React λ˜λŠ” Vite둜 μƒˆλ‘œμš΄ PWA ν”„λ‘œμ νŠΈλ₯Ό μ‹œμž‘ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ νŒ€μ—μ„œ npx @muhammaddariazzidane/pwa-gen을 μ‹€ν–‰ν•˜μ—¬ λ§ˆμŠ€ν„° 이미지 κ²½λ‘œμ™€ μ•± 메타데이터λ₯Ό μž…λ ₯ν•˜λ©΄, λͺ¨λ“  ν•„μˆ˜ μ•„μ΄μ½˜ 크기와 manifest.json νŒŒμΌμ„ ν•œ 번의 CLI λͺ…λ ΉμœΌλ‘œ 생성할 수 μžˆμ–΄ PWA 초기 μ„€μ • μ‹œκ°„μ„ μˆ˜λ™ μž‘μ—… λŒ€λΉ„ μƒλ‹Ήνžˆ 단좕할 수 μžˆλ‹€.

원문 읽기