๐ง ๋ํ์ ์ธ ๋ฒ๋ค๋ฌ ์์ โ ๋ฒ๋ค๋ฌ(Build Tool)๋?
**๋ฒ๋ค๋ฌ(Bundle + er)**๋ ์ฌ๋ฌ ๊ฐ์ ์์ค ํ์ผ(HTML, CSS, JS, ์ด๋ฏธ์ง ๋ฑ)์
ํ๋ ๋๋ ๋ช ๊ฐ์ ํ์ผ๋ก ๋ฌถ์ด ์ต์ ํํ๋ ๋๊ตฌ์ ๋๋ค.
๐ฆ ์ฆ, “์ฌ๋ฌ ์์์ ๋ธ๋ผ์ฐ์ ๊ฐ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก
ํ๋๋ก ๋ฌถ๊ณ ๊ฐ๊ณตํ๋ ์ญํ ”์ ํฉ๋๋ค.
์ฉ์ด ํ๊ธ ํ๊ธฐ ์๋ฏธ Build
Tool๋ณดํต "๋น๋ ๋๊ตฌ" ๋๋ "๋น๋ ํด"์ด๋ผ๊ณ ํ๊ธฐ ์์ค์ฝ๋๋ฅผ ์ค์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ก ๋ณํ·์ต์ ํํ๋ ๋๊ตฌ ์ ๋ฐ (ex. ์ปดํ์ผ๋ฌ, ๋ฒ๋ค๋ฌ, ์์ถ๊ธฐ ๋ฑ ํฌํจ) Bundler ๋ฒ๋ค๋ฌ๋ผ๊ณ ํ๊ธฐ ์ฌ๋ฌ ํ์ผ์ ํ๋๋ก ๋ฌถ๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋๋ก ๋ณํ·ํจํค์งํ๋ ์ญํ ์ ํ๋ ๋น๋ ๋๊ตฌ์ ํ ์ข ๋ฅ
๐ฏ ์ ํ์ํ๊ฐ์?
ํ๋ ์น ์ฑ์ ๋ค์๊ณผ ๊ฐ์ ์๋ง์ ํ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- .vue, .js, .ts, .css, .scss, .json, ์ด๋ฏธ์ง, ํฐํธ ๋ฑ…
๐ ๊ทธ๋ฐ๋ฐ ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก JavaScript์ HTML๋ง ์ง์ ์คํํ ์ ์๊ณ ,
Vue, SCSS, TypeScript ๋ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ์ดํดํ์ง ๋ชปํฉ๋๋ค.๊ทธ๋์ ์ด๋ค์ **๋ณํ(ํธ๋์คํ์ผ)**ํ๊ณ , **์์ถ(minify)**ํ๊ณ , ํ๋๋ก ๋ฌถ์ด์
๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋๋ก ๋ง๋๋ ๋๊ตฌ๊ฐ ๋ฐ๋ก ๋ฒ๋ค๋ฌ์ ๋๋ค.
๐ง ๋ํ์ ์ธ ๋ฒ๋ค๋ฌ ์์
๋ฒ๋ค๋ฌ ํน์ง Webpack ์ค์ ์ ๋ณต์กํ์ง๋ง ์ ์ฐํ๊ณ ๊ฐ๋ ฅํจ (๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉ) Vite ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ์ ๋น๋ ์๋, ์ต์ ESM ๊ธฐ๋ฐ Parcel ์ค์ ์ด ๊ฑฐ์ ํ์ ์์ (์ ๋ก ์ค์ ๋ฒ๋ค๋ฌ) Rollup ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์์ ์ต์ ํ๋ ๋ฒ๋ค๋ฌ
๐ฆ ๋ฒ๋ค๋ง ๊ณผ์ ์์
- App.vue, main.js, styles.scss, config.json ๋ฑ๋ฑ ์ฌ๋ฌ ํ์ผ์ด ์๋ค๋ฉด
- ๋ฒ๋ค๋ฌ๋ ์ด๋ฅผ ์๋์ฒ๋ผ ์ฒ๋ฆฌํฉ๋๋ค
์ต์ข ์ ์ผ๋ก๋:
[๊ฐ๋ฐ์ ์์ค์ฝ๋๋ค]
→ Vue/TypeScript → JavaScript๋ก ํธ๋์คํ์ผ
→ SCSS → CSS๋ก ๋ณํ
→ ์ฝ๋ ์์ถ ๋ฐ ์ต์ ํ
→ ํ๋ ๋๋ ์์์ ํ์ผ๋ก ๋ฌถ์ (bundle.js)
๋ธ๋ผ์ฐ์ ๋ ์ด๊ฒ๋ง ์คํํ๋ฉด ๋ฉ๋๋ค.
<script src="dist/bundle.js"></script>
โ Quasar CLI์์์ Vite vs Webpack ๋น๊ต ํ
ํญ๋ชฉ Vite Webpack ๐ ๏ธ ๊ฐ๋ฐ ๋ฐฉ์ ๋ชจ๋ ๋จ์๋ก ES Module์ ํ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ก ์ ๋ฌ (Hot Reload ๋น ๋ฆ) ์ ์ฒด ์ฝ๋๋ฅผ ๋ฒ๋ค๋งํ์ฌ dev ์๋ฒ๋ก ์๋น (๋ก๋ฉ ์๋ ๋๋ฆผ) โก ๊ฐ๋ฐ ์๋(HMR) ๋งค์ฐ ๋น ๋ฆ (์ด๊ณ ์ ํซ ๋ฆฌ๋ก๋ ๋ฐ ๋ณ๊ฒฝ ๋ฐ์) ๋๋ฆผ (๋ฆฌ๋น๋ ์ ์ ์ฒด ๋ฒ๋ค ์ฌ์ปดํ์ผ) ๐ฆ ๋ฒ๋ค๋ง ์์ ๊ฐ๋ฐ ์ค์๋ ๋ฒ๋ค๋ง X, ๋น๋ ์์ ์๋ง ๋ฒ๋ค๋ง ๊ฐ๋ฐ ์์๋ ๋ฒ๋ค๋ง ์ํ ๐ ์ต์ข ๋น๋ ์๋ ๋ ๋น ๋ฆ (ESBuild ๊ธฐ๋ฐ) ๋๋ฆผ (Babel ๊ธฐ๋ฐ) ๐งฉ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ ๋ค์ ์ ํ์ ์ด์ง๋ง ๋น ๋ฅด๊ฒ ์ฑ์ฅ ์ค ์ฑ์ํ๊ณ ํ๋ถํ ์ํ๊ณ โ๏ธ ๊ตฌ์ฑ ์ ์ฐ์ฑ ์ง๊ด์ ์ด๊ณ ๊ฐ๋จ (Vite ์์ฒด ์ค์ ๊ตฌ์กฐ๊ฐ ๋จ์ํจ) ๋ณต์กํ์ง๋ง ์ ๋ฐํ ์ค์ ๊ฐ๋ฅ (Webpack์ ๊ฐ์ ) ๐งช ์ ๊ตํ ์ค์ /์ปค์คํฐ๋ง์ด์ง ๊ฐ๋จํ์ง๋ง ์ ํ์ ์ผ ์ ์์ ๋งค์ฐ ์ ์ฐํ๊ณ ๋ณต์กํ ์ค์ ๊ฐ๋ฅ (๋ก๋, ํ๋ฌ๊ทธ์ธ ๋ฑ) ๐ ์์ค๋งต ์ง์ ๋น ๋ฅด๊ณ ์ ํํ ์์ค๋งต ์ ๊ณต ์์ค๋งต ์์ฑ ์๋ ๋๋ฆผ ๐ฑ Quasar Native ํ๋ซํผ ์ง์ Cordova, Capacitor, Electron ์ง์์ ์๋์ ์ผ๋ก ์ ์ (์ผ๋ถ ์ ์ฝ) Quasar์ ๋ชจ๋ ๋ชจ๋์ ์๋ฒฝ ํธํ (Electron, SSR ๋ฑ ํฌํจ) ๐ถ ์ด๋ณด์ ์ถ์ฒ ์ด๋ณด์์๊ฒ ๋งค์ฐ ์ ํฉ (๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ) ๊ณ ๊ธ ๊ธฐ๋ฅ๊น์ง ์ฐ๋ ค๋ฉด ์ค์ ํ์ต ํ์ ๐ง๐ป ๋๊ท๋ชจ ํ๋ก์ ํธ ์ฑ๋ฅ์ ๋ฐ์ด๋์ง๋ง ์์ง ์ ํ์ ์ด์ ์์ (ํ๋ฌ๊ทธ์ธ ๋ถ์กฑ) ์์ฑ๋ ๋๊ณ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉ ๐ ๊ณต์ ๋ฌธ์/์๋ฃ ๋ฌธ์ ์น์ , ์์ง Webpack๋งํผ์ ์๋ ๋ฐฉ๋ํ ๋ฌธ์์ ์ปค๋ฎค๋ํฐ
๐ ํ๋ก์ ํธ CLI๊ฐ Vite์ธ์ง Webpack์ธ์ง ๊ตฌ๋ถํ๊ธฐ
โ 1. quasar.config.js ๋๋ quasar.conf.js ํ์ผ ํ์ธ
CLI Variant ๊ตฌ๋ถ ๋ฐฉ๋ฒ Vite ํ์ผ ์๋จ์ import { defineConfig } from 'quasar' ๋๋ from 'quasar/vite' ๋ฑ์ด ๋ณด์ Webpack module.exports = function (ctx) { return { ... } } ํํ๋ก ๋์ด ์์ (CommonJS ํ์) โ 2. ํจํค์ง ํ์ผ(package.json) ํ์ธ
# Vite CLI variant์ผ๋ "devDependencies": { "@quasar/app-vite": "^1.0.0" } # Webpack CLI variant์ผ๋ "devDependencies": { "@quasar/app-webpack": "^3.0.0" }โ
โ 3. ๋ช ๋ น์ด๋ก ํ์ธ (์ต์ )
ํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ด ์คํ
quasar infoโ
์ถ๋ ฅ ์์์์ ๋ค์๊ณผ ๊ฐ์ ์ค์ ์ฐพ์ผ์ธ์
# Vite CLI variant์ผ๋ CLI tooling: @quasar/app-vite v1.4.2 # Webpack CLI variant์ผ๋ CLI tooling: @quasar/app-webpack v3.5.1โ
728x90
๋ฐ์ํ
'Dev_Study > Quasar_Framework' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Quasar_Framework] 03. ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์คํ๊ณผ์ (0) | 2025.07.09 |
---|---|
[Quasar_Framework] 01.Quasar Framework๋? (0) | 2025.07.08 |