Snowpack๊ณผ Vite๋ ํ๋ฐํธ์๋ ๋น๋ ํด์ด๋ค. ์ด ๋ ๋ชจ๋ ๊ฐ๋ฐ ์ HMR์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ฉฐ, ์ด ๋ Esbuild๋ฅผ ์ด์ฉํ์ฌ ๋น ๋ฅธ ์๋๋ก ๋น๋๋ฅผ ์งํํ ์ ์๋ค๋ ๊ณตํต์ ์ด ์๋ค.
ย
๋ค๋ง ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ ๊ฐ๋จํ๊ฒ ์ด ์ฐจ์ด์ ์ ์๊ฐํ๊ณ ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ด์ฉ์ ๊ทผ๊ฑฐ๋ก ๋ง์ผ Snowpack์ ์ฌ์ฉํ๋ ค ํ๋ค๋ฉด ์ด๋ณด๋ค Vite๋ฅผ ๊ณ ๋ คํด๋ณด๋ ๊ฒ์ ๊ถํ๋ค.
Diff 1. Production Build ๋ฐฉ์
Snowpack์ Build ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ๋ค๋ง ๊ณผ์ ์ ์งํํ์ง ์๋๋ค.
ย
์ด๋ Snowpack ๋ฌธ์์๋ ๋ช
์๋์ด ์๋ ์ฌํญ์ด๋ฉฐ, ๊ฐ๊ฐ์ JavaScript/CSS/HTML ํ์ผ์ ๋น๋ํ ๋ค ์ด๋ฅผ ๋ฒ๋ค๋ง ๋ฐ ์ต์ ํ(minimize, mangling, tree-shaking, ...)๋ฅผ ์ํํ๋ ๋ค๋ฅธ ๋๊ตฌ(webpack, rollup, esbuild ๋ฑ)๋ฅผ ์ด์ฉํด์ผ ํ๋ค.
ย
๋ฌผ๋ก Built-In(Esbuild) ๋ฐ Plugin(Rollup, Webpack) ๋ฐฉ์์ผ๋ก ๋ฒ๋ค๋ง์ ํ ์ ์๋๋ก ๊ณต์์ ์ผ๋ก ์ง์ํ๊ณ ๋ ์๋ค. ๊ทธ๋ฌ๋ Built-In ๋ฐฉ์์ Production Build์ ์ ์ฉํ๊ธฐ์๋ ์์ง ์ด๋ฅด๋ค ์ธ๊ธ๋๋ Esbuild๋ง์ ์ง์ํ๋ฉฐ, Plugin ๋ฐฉ์ ๋ํ ์ฌ์ฉ์ ์๊ฐ ๊ทธ๋ฆฌ ๋ง์ง ์๊ณ (4k downloads/week) ํ๋ฌ๊ทธ์ธ ๋ชจ๋์ ๊ด๋ฆฌ๊ฐ ์ ๊ฐ์ ์งธ ์ด๋ฃจ์ด์ง์ง ์๊ณ ์๊ธฐ์ ์ด ์ญ์ ์ค์ ์๋น์ค ํ๋ก๋์
์ ์ ์ฉํ๊ธฐ์๋ ๋ถ์ ์ ํ๋ค ํ๋จ๋๋ค.
ย
Vite๋ Rollup์ ๊ธฐ๋ฐ์ผ๋ก๋ง ๋ฒ๋ค๋ง์ ์งํํ๋ค. ํ๋์ ๋ฒ๋ค๋ฌ๋ง์ ์ด์ฉํ๊ธฐ์ Snowpack ๋๋น ๋์ฑ ๋ง์ ๊ธฐ๋ฅ๋ค์ Out-Of-The-Box๋ก ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ์ด์ ๋์, ๋ฒ๋ค๋ฌ ์ค์ , ๋ฒ๋ค๋ง ๋ ํ์ผ์ ํฌ๊ธฐ ๋ชจ๋ Snowpack ๋๋น ์ฐ์ํ๋ค. ๋ฌผ๋ก ๋ฒ๋ค๋ง ์๋ ๋ํ ํฌ๊ฒ ๋ค์ง์ง ์๋ ํธ.
Diff 2. Pre-Bundled Dependencies
Vite๋ (๋ก์ปฌ์์)๊ฐ๋ฐ ์ ์ฌ์ฉ๋๋ ๋ํ๋์๋ฅผ ์ฌ์ ์ ๋ฒ๋ค๋งํ ๋ค ์บ์ฑํ๋ค. ์ด ๋๋ถ์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์ฌ์์ํ๋๋ผ๋ ๋ํ๋์๋ฅผ โ๋ค์' ๋ฒ๋ค๋ง ํ ํ์๊ฐ ์๊ฒ ๋๋ค. ์ด๋ ๊ฐ๋ฐ ์๋์ ํฅ์์ผ๋ก ์ด์ด์ง๋ค.
Diff 3. First-Class Vue Support
์ฒ์ Vite๋ Vue ํด๋ง๋ง์ ํ๊น์ผ๋ก ๋์๋ค. ๋ฌผ๋ก ์ง๊ธ(Vite 2.0)์ ํ๋ ์์ํฌ์ ๊ตฌ์ ๋ฐ์ง ์์ผ๋, ์ฒ์์๋ ๊ทธ๋ฌ๋ค. ๋ค๋ง ์ด๋ฌํ ์ปจ์
์ ํ์ฌ๊น์ง๋ ์ด์ด์ง๊ณ ์์ผ๋ฉฐ, ๋ฐ๋ผ์ ๋ค๋ฅธ ๋น๋ ํด๋ณด๋ค Vue๋ง์ ํ๊น์ผ๋ก ํ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๊ณ ์๋ค.
ย
์๋ฅผ ํ๋ ๋ค์ด๋ณด์๋ฉด, Vue SFC์
<script setup>
์ด ์๋ค.ย
<script lang="ts" setup> // ... </script>
ย
์ด๋ฌํ ๊ฒ๋ค์ Vue๋ง์ ํ๊น์ผ๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ฉฐ, ์ด ๋๋ถ์ Vue ๊ฐ๋ฐ ์ Vite๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ๋งค์ฐ ๋งค๋ ฅ์ ์ธ ์ ํ์ง๊ฐ ๋ ์ ์๋๋ก ํด์ค๋ค.
Conclusion
์ด๋ด์ฉ์ด ๋ถ์กฑํ๋ค ํ๋จ๋๋ฉด Vite ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ ์๋ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก, NPM Trends๋ฅผ ๋น๊ตํ์๋ฉด ์๋์ ๊ฐ๋ค.
ย
ย