Stop Resizing PWA Icons by Hand: I Built a CLI to Automate It in Seconds π
νλ‘ νΈμλ κ°λ°μκ° PWA μμ΄μ½ μλ 리μ¬μ΄μ§ μμ μ μλννλ CLI λꡬ(pwa-gen) κ°λ°μΌλ‘ μ΄κΈ° μ€μ μκ° λ¨μΆ
AI μμ½
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 μ΄κΈ° μ€μ μκ°μ μλ μμ λλΉ μλΉν λ¨μΆν μ μλ€.