# μν¬λ°μ€(Workbox)λ?
PWAμ μΊμ±(caching) κΈ°λ₯μ νΈνκ² κ΅¬νν μ μλλ‘ μ§μλλ νμ€ PWA λΌμ΄λΈλ¬λ¦¬. [sw-precaching], [sw-toolbox] λΌμ΄λΈλ¬λ¦¬κ° μ§μνλ κΈ°λ₯λ€μ ν΅ν©νμ¬ μ 곡νλ€.
# CLIλ‘ μν¬λ°μ€ μμνκΈ°
μν¬λ°μ€ λΌμ΄λΈλ¬λ¦¬μ μ¬μ© λ°©λ²μ μ΅νκΈ° μν΄μ CLIλ‘ κ°λ¨νκ² νμΌμ μΊμ±ν΄λ³΄κ² μ΅λλ€. λ¨Όμ CLIλ₯Ό μλ λͺ λ Ήμ΄λ‘ μ€μΉν©λλ€.
npm install workbox-cli --global
μ μμ μΌλ‘ μ€μΉκ° λμμΌλ©΄ workbox --help
λͺ
λ Ήμ΄κ° μΈμλ κ²μ
λλ€.
# μν¬λ°μ€ CLIλ‘ μλΉμ€ μ컀 μμ±νκΈ°
PWAλ₯Ό μ μ©νκ³ μΆμ μΉ μ ν리μΌμ΄μ μ νλ‘μ νΈμμ μλμ κ°μ΄ μν¬λ°μ€ μμ λ λͺ λ Ήμ΄λ₯Ό μ λ ₯ν©λλ€.
workbox wizard
μ λͺ λ Ήμ΄λ₯Ό μ λ ₯νλ©΄ μλμ κ°μ΄ λͺ κ°μ§μ μ§λ¬Έμ΄ λμ΅λλ€. κ·Έ μ§λ¬Έμ μλμ κ°μ΄ λλ΅ν©λλ€.
- μΉ μ ν리μΌμ΄μ
μ 루νΈκ° μ΄λμΈμ§?
app/
- μ΄λ€ νμΌ μ νλ€μ ν리μΊμ±(pre-caching)ν κ²μΈμ§?
html, css, js, jpg, png
- μ μ΅μ
λ€μ΄ μ μ©λ μλΉμ€ μ컀 νμΌμ΄ μμ±λ μμΉ?
dist/sw.js
- μ κ΅¬μ± μ 보λ€μ μ΄λμ μ μ₯ν κ²μΈκ°?
workbox-config.js
# μν¬λ°μ€ CLIμ generateSW λͺ¨λ
μμ μμ λλ‘ μμ±ν μν¬ λ°μ€μ κ΅¬μ± μ 보λ workbox-config.js
μ λ΄κΈ°κ² λ©λλ€.
μ΄ λ λ€μ λͺ
λ Ήμ΄λ₯Ό μ
λ ₯νλ©΄ μ κ΅¬μ± μ λ³΄κ° λ΄κΈ΄ μλΉμ€ μ컀 νμΌμ μμ±ν μ μμ΅λλ€.
workbox generateSW ./workbox-config.js
μ΄λ κ² μμ±λ μλΉμ€ μ컀 νμΌμλ μν¬λ°μ€μ ν리 μΊμ±κ³Ό λ°νμ μΊμ± κΈ°λ₯μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
TIP
λ€λ§, μΉ νΈμ κΈ°λ₯μ΄ νμν κ²½μ°μλ μ ν©νμ§ μμ μ΅μ
μ
λλ€. μΉ νΈμλ injectManifest
μ΅μ
μ νμ©νμΈμ.
# μν¬λ°μ€ CLIμ injectManifest λͺ¨λ
μν¬λ°μ€ injectManifest λͺ¨λλ generateSW λͺ¨λμλ λ€λ₯΄κ² κ°λ°μκ° μ’ λ μλΉμ€μ컀 νμΌμ μ§μ μ‘°μνκ±°λ λ΄μ©μ μμ ν μ μμ΅λλ€. νμΌ μΊμ± μ΄μΈμ μΉ νΈμ APIμ κ°μ λ€μ΄ν°λΈ API κΈ°λ₯μ ꡬννκ³ μΆμ λ μ ν©ν λͺ¨λμ λλ€.
κ°λ°μκ° κ΅¬νν΄λμ μλΉμ€ μ컀 νμΌμ μ½μ΄ μ€μ νμΌ(workbox-config.js)μ μ€μ λ μΊμ± μ 보λ₯Ό μΆκ°νκ³ μ μλΉμ€ μ컀 νμΌμ μμ±ν΄μ€λλ€. λͺ λ Ήμ΄λ λ€μκ³Ό κ°μ΅λλ€.
workbox injectManifest ./workbox-config.js
β CLI PWA Plugin Workbox Caching β