Dev_Study/Quasar_Framework

[Quasar_Framework] 02. Build Tool(๋ฒˆ๋“ค๋Ÿฌ)

LeeDaniel 2025. 7. 8. 17:52
๐Ÿ”ง ๋Œ€ํ‘œ์ ์ธ ๋ฒˆ๋“ค๋Ÿฌ ์˜ˆ์‹œ โœ… ๋ฒˆ๋“ค๋Ÿฌ(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 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ์ž‘์— ์ตœ์ ํ™”๋œ ๋ฒˆ๋“ค๋Ÿฌ

๐Ÿ“ฆ ๋ฒˆ๋“ค๋ง ๊ณผ์ • ์˜ˆ์‹œ

  1. App.vue, main.js, styles.scss, config.json ๋“ฑ๋“ฑ ์—ฌ๋Ÿฌ ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด
  2. ๋ฒˆ๋“ค๋Ÿฌ๋Š” ์ด๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
[๊ฐœ๋ฐœ์ž ์†Œ์Šค์ฝ”๋“œ๋“ค]
 → 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
๋ฐ˜์‘ํ˜•