2021๋
Vue์ ๊ฐ๋ฐ์(a.k.a ์ฐฝ์กฐ์ฃผ)์ธ Evan You๋์ด ์๋ก์ด Vue3 ์ํ๊ณ์ ๋น๋ ํด์ธ Vite ๋ฅผ ์๊ฐํ์์ต๋๋ค. ๊ทธ๋ Vite๋ ๊ธฐ์กด์ Vue CLI์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๊ฒ๋ณด๋ค ์ต๋ 100๋ฐฐ ๋น ๋ฅธ ์๋๋ฅผ ๊ฒฝํํ ์ ์๋ค๊ณ ํ์๋๋ฐ์. ์ ๊ฐ Vue3์ผ๋ก ๊ฐ๋ฐํ๋ฉด์ Vite๊ฐ ๋ฌด์์ธ์ง ๋๋ฌด ๋ชจ๋ฅด๊ณ ์ฐ๊ณ ์๋ค๋ ์๊ฐ์ด ๋ค์ด์ ํ๋ฒ ๊ธฐ์กด์ Vue CLI์ ๋น๊ตํ๋ ๊ธ์ ์ ์ด๋ณด๋ ค๊ณ ํฉ๋๋ค.
Vite(ํ๋์ค์ด๋ก "๋น ๋ฅด๋ค(Quick)"๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ฐ์์ "veet"์ ๋น์ทํ /vit/ ์ ๋๋ค.)์ ๋น ๋ฅด๊ณ ๊ฐ๊ฒฐํ ๋ชจ๋ ์น ํ๋ก์ ํธ ๊ฐ๋ฐ ๊ฒฝํ์ ์ด์ ์ ๋ง์ถฐ ํ์ํ ๋น๋ ๋๊ตฌ์ด๋ฉฐ, ๋ ๊ฐ์ง ์ปจ์ ์ ์ค์ฌ์ผ๋ก ํ๊ณ ์์ต๋๋ค.
- ๊ฐ๋ฐ ์ ๋ค์ดํฐ๋ธ ES Module์ ๋์ด ๋์ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ น, Hot Module Replacement (HMR)๊ณผ ๊ฐ์ ๊ฒ๋ค ๋ง์ด์ฃ .
- ๋ฒ๋ค๋ง ์, Rollup ๊ธฐ๋ฐ์ ๋ค์ํ ๋น๋ ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๋์ ์์ค์ผ๋ก ์ต์ ํ๋ ์ ์ (Static) ๋ฆฌ์์ค๋ค์ ๋ฐฐํฌํ ์ ์๊ฒ๋ ํ๋ฉฐ, ๋ฏธ๋ฆฌ ์ ์๋ ์ค์ (Pre-configured)์ ์ ๊ณตํฉ๋๋ค.
...
-- Vite ๊ณต์ ๋ฌธ์ ์ค Vite ์๊ฐ๊ธ ... --
์์งํ ์์ ๋ง์ด ์ดํดํ๊ธฐ ๋ํดํด์, ๋๋ฆ๋๋ก ์ฝ๊ฒ ์ ๋ฆฌํ์๋ฉด,
์์ ์๊ฐ๊ธ์ ๋ณด๊ณ ์ดํด๊ฐ ๋๋, ์ด๋ฐ ์๊ฐ์ด ๋ค๋๋ผ๊ตฌ์.
"Vite๊ฐ ์ ๋น ๋ฅด๊ณ ... Vue CLI๋ ์ ๋๋ ธ๋ ๊ฒ์ธ์ง ???"
ํ์คํ ํ์
์์ ํ๋ก์ ํธ๊ฐ ์งํ๋จ์ ๋ฐ๋ผ ์ฝ๋๋๊ณผ ์ ์ ํ์ผ๋ค์ด ๋์ด๋๋ฉด์, ํ
์คํธ ํ๋ฒ ํ๊ธฐ ์ํด 3๋ถ์ฉ ๊ธฐ๋ค๋ฆฌ๋ ๊ธฐ์ต์ ์๊ฐํ๋ฉด, ๋์ฒด ๊ทธ๋์ ์ ๊ธฐ์กด์ Vue CLI์ Webpack ๋น๋๊ฐ ๋๋ ธ๋ ๊ฒ์ธ์ง ๊ถ๊ธํด์ง๋๋ผ๊ตฌ์ ใ
ใ
ใ
(ํ์๋ ์์๋ณด๊ธฐ ์ ๊น์ง RAM๋ง ํํ๊ณ ์์์ ใ
)
์ฐพ์๋ณด๋, ์ด๋ฐ ๋น๋์๋ ์ฐจ์ด๋ WebPack ๊ณผ Vite์ ๊ฐ๋ฐ์๋ฒ ์ํคํ ์ณ์ ์ฐจ์ด์์ ์ผ๊ธฐ๋๋ค๊ณ ํฉ๋๋ค
๊ธฐ์กด์ Vue CLI ๋ฐฉ์์ Webpack์ ์์กดํ์ฌ ํ๋ก์ ํธ์ ๋ชจ๋ import
์ require
์ ์ฒ๋ฆฌํ๊ณ ํ์ผ๋ค(์๋ฅผ ๋ค์ด, Sass,typescript...etc)์ ๋ณํํ์ฌ Javascirpt ๋ฒ๋ค์ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ , ์ด๋ฌํ ์ผ์ ์๋ฒ์ฌ์ด๋์์ ์ ๋ถ ์ฒ๋ฆฌํ์๊ธฐ ๋๋ฌธ์, ํ๋ก์ ํธ์ ์๋ dependencies
๊ฐ ๋ง์ ์ง ์๋ก, ๋ณํ๊ฐ ๋ ๋ง์๋๋ง๋ค ๋น๋/์ฌ๋น๋ ์๋๊ฐ ๋ ๋์ด ๋ ๊ฒ์ด์์ฃ . ๋ฌผ๋ก , ํ๋ฒ ๋น๋๋ ํ Webpack๋ ์ฝ๋์ ๋ณํ๋ฅผ ๊ฐ์งํ์ฌ, ์๋์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ๋น ๋ฅด๊ฒ ์ ์ฉํ์ฌ ์ฃผ์ง๋ง, ํ์
์์๋ ์ฒ์ ๋น๋ํ ๋๊ฐ ์ ๋ง ์ค๋๊ฑธ๋ฆฌ๋๋ผ๊ตฌ์ ใ
ใ
์์ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด Vite๋ ์๋ฒ์ฌ์ด๋์์ ๋น๋๋ฅผ ์ฒ๋ฆฌํ์ง ์๊ณ , ์ต์ ๋ธ๋ผ์ฐ์ ธ์ ์ถ๊ฐ๋ JS Modules (ES Modules)๋ค์ ์ฌ์ฉํ์ฌ, ๋ชจ๋ ํ์ผ๋ค์ ์ฒ๋ฆฌํ์ง ์๊ณ ํ์์ธ ์์(e.g. index.html)๋ค๋ง ์ฒ๋ฆฌํ๋ค ๋ธ๋ผ์ฐ์ ์์ ํ์ํ ์์(์๋ฅผ๋ค์ด, typescript, Sass ๋ฑ)๋ค์ด ์๊ธธ๋๋ง๋ค on-demand ๋ฐฉ์์ผ๋ก dev server์ ์์ฒญํ๋ค๊ณ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ๊ฐ๋ฐํ๋ ์์ค ์ฝ๋๋ฅผ ์์ ํ๋ฉด Vite์ Hot Module Replacement(HMR)๊ฐ ์ด๋ฅผ ๊ฐ์งํ๊ณ , ์๋์ผ๋ก ์ต์ํ์ ์ ํญ๋ง์ผ๋ก ์ ๋ฐ์ดํธํ๋ค๊ณ ํฉ๋๋ค. (Webpack์ฒ๋ผ์!)
์ด ์ํคํ ์ณ ๋๋ถ์ Vite๋ ๋ ๋น ๋ฅธ ๊ฐ๋ฐ์๋ฒ๋ฅผ ์ ๊ณตํ ์ ์๊ณ , ๋ธ๋ผ์ฐ์ ๋ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ชจ๋์ ์ฒ๋ฆฌํ ์ ์๊ฒ๋ ๊ฒ์ด์ฃ ! ์ต์ 10๋ฐฐ ~ ์ต๋ 100๋ฐฐ๋ ๋น ๋ฅด๋ค๋ ๋๋ผ์ด ๋ถ๋ถ์ด๋ค์ ใ
์ถ๊ฐ์ ์ผ๋ก Vite์ VueCLI์ ๋น๋ ์๋ ๋ฐด์น๋งํฌ๋ Evan You๋์ Vite and VitePress ์์์ 6:30 ์ฏค ๋ณด์๋ฉด ๋ณด๋ค ํ์คํ๊ฒ ํ์ธํ ์ ์์๊ฑฐ์์ฌ !
์ ๋ ์ด ๋ถ๋ถ์ด ์กฐ๊ธ ๋ถ์ํด์ ์ฐพ์๋ณด๋, ์์์ ๋์จ ๋ง์ฒ๋ผ ์ต์ ๋ธ๋ผ์ฐ์ ์ ES Module ๊ธฐ๋ฅ์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ค๋๋ ๋ธ๋ผ์ฐ์ (IE ๊ฐ์ ...)์์๋ @vitejs/plugin-legacy
๋ฅผ ์ค์นํด์ค์ผ๋๊ณ , CommonJS Module์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ์ ๊ฒฝ์ฐ๋ Javascript Module์ผ๋ก ๋ณํํ ๋ ์ฝ๊ฐ์ ์์ธ์ ์ธ ์ํฉ์ด ๋ฐ์ ํ ์์๋ค๊ณ ํ๋ค์.
๊ทธ๋ฆฌ๊ณ , ๋ฌด์๋ณด๋ค ๊ฐ๋ฐํ๊ฒฝ์ ์ด์ํ๊ฒฝ์์ ๋ค๋ฅธ ๋ฒ๋ค ํด(Rollup)์ ์ฌ์ฉํด์ผ ๋๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ฐจ์ด๊ฐ ๋ฐ์ํ ์ ์๊ฒ ์ฃ ???
ํ์ง๋ง, ์ ๊ฐ ์ง๊ธ ํ๋๊ฒ "๊ฐ๋ฐ์๋ฒ์ด๋๊น " ๋๋ถ๋ถ์ ๋จ์ ์ ์ด๋์ ๋ ์ปค๋ฒ๊ฐ ๋๋ค๊ณ ์๊ฐํด์. ์ต์ ๋ธ๋ผ์ฐ์ ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐํ๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉํ ๊ฒ์ด๊ณ , CommonJS Module์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฐพ๊ธฐ๊ฐ ํ๋ค๊ฐ๊ณ ํ๋ ... ใ ใ , ๋จ์ ์ ๋ง์ง๋ง์ ๋งํ ์ ๋ฐ์ ์๋๊ฑฐ ๊ฐ์์. ์ ์ด์ Vite๊ฐ ์กฐ๋ช ๋ฐ๋ ๋ถ๋ถ์ ๊ฐ๋ฐ ๋จ๊ณ์์์ Debugging์ด๋๊น์ !
Rollup(Vite์ ์ด์ ์ดํ๋ฆฌ์ผ์ด์ ๋ฒ๋ค ํด)์ Webpack๊ณผ ๊ฐ์ด ์ด์์ ์ํ ๋น๋ ๊ธฐ๋ฅ์ ์ํํ๋ค๊ณ ํ๋๋ฐ, ์์ง๊น์ง ์ ํํ๊ฒ Webpack๊ณผ ์ด๋ค ์ ์ด ๋ค๋ฅธ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ถํ์ ์๊ฒ๋๋ฉด ์ ๋ฆฌํด๋ณด์ฃ ๋ญ ใ
Vue CLI ์ฅ์ | Vue CLI ๋จ์ | ๋น๊ณ |
---|---|---|
๋น๋ํ๊ฒฝ์ด ๊ฐ๋ฐ๊ณผ ์ด์์ด ๊ฐ๋ค | ํ๋ก์ ํธ๊ฐ ์ปค์ง ์๋ก ๋น๋ ์๋๋ ๋์ด๋๋ค | |
๋ชจ๋ dependency๋ฅผ ๋ฒ๋ค๋งํ ์ ์๋ค | vue project๋ง scaffolding ๊ฐ๋ฅ | |
p.s. Vue2๋ ํธํ์ด ๋๋ค. |
Vite ์ฅ์ | Vite ๋จ์ | ๋น๊ณ |
---|---|---|
๊ธฐ์กด Webpack๋ณด๋ค 10-100๋ฐฐ ๋น ๋ฅด๋ค | ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ ๊ถ์ฅ | |
Vue3+ ๋ค๋ฅธ ํ๋ก์์ํฌ (React)์๋ ํธํ์ด ๋๋ค. | CommonJS ๋ชจ๋๊ณผ ํธํ์ด ์ ๋ง์์๋ ์๋ค. | |
๊ฐ๋ฐ์ด๋ ์ด์ํ๊ฒฝ์ ๋น๋ ํด์ด ๋ค๋ฅด๋ค (Rollup) |
์ ๋ชฉ์๋ Vue CLI ๋ ๊ตฟ๋ฐ์ด๋ผ๊ณ ํ์ง๋ง, ์์งํ Vite์ Vue CLI ๋ ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํ๋์ง๋ ๊ฐ๋ฐ์์ ๋ง์๊ฐ์์. ์ง๊ธ ์ ๊ฐ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ vite
์ผ๋ก ์งํํ๊ณ ์์ง๋ง, ๊ธฐ์กด์ Vue CLI์ผ๋ก ์งํํ ํ๋ก์ ํธ๋ฅผ Vite์ผ๋ก ๋ฐ๊ฟ๋งํผ์ ๋ฉ๋ฆฌํธ๋ ์์๊ฑฐ ๊ฐ์ต๋๋ค. ์ง๊ธ๊น์ง ๊ฐ๋ฐํ๋ ํ๊ฒฝ์ Vite์ ๋ฐ๊พธ๋๋ฐ ์ธ ์๊ฐ์ ๊ณ ๋ คํ๋ฉด ์คํ๋ ค ์ญํจ๊ณผ์ผ์๋ ...
ํ์ง๋ง, ์ผ๋จ Vite์ ๊ฐ๋ฐ์๊ฐ Vue์ ๊ฐ๋ฐ์์ ๊ฐ์ ๋ถ์ด๋๊น ํธํ์ฑ์ด ์ ๋ง์ง ์์๊น์ ??? Vue ๊ฐ๋ฐ์๋ผ๋ฉด ํ๋ฒ Vite ์ฐ๋๊ฑฐ ๊ฐ์ถํฉ๋๋ค. ๊ทธ๋ผ ์ด๋ง ... ใ