๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

22.07.25_TIL

by ํ˜ธ๋ฐ€์ด 2022. 7. 25.

๐Ÿ“Œ ์›นํŒฉ์€ ์–ด๋ ต๋‹ค๊ณ  ๋งŽ์ด ๋“ค์—ˆ๋Š”๋ฐ ์–ด๋–ค ๋ถ€๋ถ„์—์„œ ์–ด๋ ค์›€์ด ์žˆ๋Š”์ง€ ์ž์„ธํžˆ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.

๐Ÿ“— ์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ

๋ฒˆ๋“ค๋ง

  • ์‚ฌ์ „์  ์˜๋ฏธ: ์—ฌ๋Ÿฌ ์ œํ’ˆ์ด๋‚˜, ์ฝ”๋“œ, ํ”„๋กœ๊ทธ๋žจ์„ ๋ฌถ์–ด์„œ ํŒจํ‚ค์ง€๋กœ ์ œ๊ณตํ•˜๋Š” ํ–‰์œ„
  • ๊ฐœ๋ฐœ์  ์˜๋ฏธ: ์‚ฌ์šฉ์ž์—๊ฒŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ ๋ฌถ์Œ

๋ฒˆ๋“ค๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ผ์–ด๋‚˜๋Š” ์ƒํ™ฉ

  • ๋‘ ๊ฐœ์˜ jsํŒŒ์ผ์—์„œ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์„œ ๋ณ€์ˆ˜ ๊ฐ„ ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ ์ƒํ™ฉ
  • ๋”ฑ ํ•œ ๋ฒˆ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ฝ”๋“œ๊ฐ€ 8MB๋ผ์„œ, ์ธํ„ฐ๋„ท ์†๋„๊ฐ€ ๋Š๋ฆฐ ๊ตญ๊ฐ€์˜ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ถˆํŽธ์„ ํ˜ธ์†Œํ•œ ์ƒํ™ฉ
  • ๋ฒˆ๋“ค ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ผ์˜ ๊ณต๋ฐฑ์„ ๋ชจ๋‘ ์ง€์› ๋Š”๋ฐ, ๊ฐ€๋…์„ฑ์ด ๋„ˆ๋ฌด ๋–จ์–ด์ ธ์„œ ์ฝ”๋”ฉํ•˜๊ธฐ ์–ด๋ ค์šด ์ƒํ™ฉ
  • ๋ฐฐํฌ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ฝ๊ธฐ ์‰ฌ์›Œ ๊ฐœ๋ฐœ์„ ํ•  ์ค„ ์•„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž„์˜๋กœ ์กฐ์ž‘ํ•˜์—ฌ ํ”ผํ•ด๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํ™ฉ

์›นํŒฉ (Webpack)

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ•ฉ์ณ์ฃผ๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ
    • *๋ชจ๋“ˆ๋ฒˆ๋“ค๋Ÿฌ: HTML, CSS, JavaScript ๋“ฑ์˜ ์ž์›์„ ์ „๋ถ€ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ๋กœ ๋ณด๊ณ  ์ด๋ฅผ ์กฐํ•ฉํ•ด ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋ฒˆ๋“ค๋ง(๋นŒ๋“œ)ํ•˜๋Š” ๋„๊ตฌ
  • ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆ๋“ค๋Ÿฌ
  • ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋Œ€๊ทœ๋ชจ ์œ ์ €์—๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋„ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

Webpack์—์„œ์˜ ๋ชจ๋“ˆ

  • JavaScript์˜ ๋ชจ๋“ˆ์—๋งŒ ๊ตญํ•œํ•˜์ง€ ์•Š๋Š”๋‹ค. HTML, CSS, jpg, png ๊ฐ™์€ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค๋„ ์ „๋ถ€ ํฌํ•จํ•œ ํฌ๊ด„์ ์ธ ๊ฐœ๋…์ด๋‹ค.

๋นŒ๋“œ์™€ ๋ฒˆ๋“ค๋ง

  • ๋นŒ๋“œ: ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ์•ฑ์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ํด๋”๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ค€๋น„ํ•˜๋Š” ์ž‘์—…
    • React์•ฑ: npm run build๋ฅผ ์‹คํ–‰ํ•˜๋ฉด React buid ์ž‘์—…์ด ์ง„ํ–‰๋˜๊ณ , index.html ํŒŒ์ผ์— ์••์ถ•๋˜์–ด ๋ฐฐํฌ์— ์ตœ์ ํ™”๋œ ์ƒํƒœ๋ฅผ ์ œ๊ณต
  • ๋ฒˆ๋“ค๋ง: ๋ฌถ์Œ์˜ ๊ฐœ๋…(๊ทธ๋ฃนํ™”), ํŒŒ์ผ์„ ๋ฌถ๋Š” ์ž‘์—… ๊ทธ ์ž์ฒด๋ฅผ ๋งํ•˜๋ฉฐ ํŒŒ์ผ์€ ์˜์กด์  ๊ด€๊ณ„์— ์žˆ๋Š” ํŒŒ์ผ๋“ค ๊ทธ ์ž์ฒด ํ˜น์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์˜๋ฏธ

Webpack์˜ ํ•„์š”์„ฑ

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น ๋ฅธ ๋กœ๋”ฉ ์†๋„์™€ ๋†’์€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ์ด๋‹ค.
  • ๊ฐ ์ž์›๋“ค์„ ์ผ์ผํžˆ ์„œ๋ฒ„์—์„œ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ์ฝ”์ŠคํŠธ๊ฐ€ ํš๊ธฐ์ ์œผ๋กœ ์ค„์–ด๋“ ๋‹ค.

์›นํŒฉ์˜ ํ•ต์‹ฌ ๊ฐœ๋…

  • Target
    • target: ["ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ", "ECMAScript ๋ฒ„์ „"]
  • Entry
    • ์›นํŒฉ์ด ๋‚ด๋ถ€์˜ ๋””ํŽœ๋˜์‹œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“ˆ
    • ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • Output
    • ์ƒ์„ฑ๋œ ๋ฒˆ๋“ค์„ ๋‚ด๋ณด๋‚ผ ์œ„์น˜์™€ ์ด ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ webpack์— ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• 
  • Loaders
    • Webpack์€ JavaScript์™€ JSON ํŒŒ์ผ๋งŒ ์ดํ•ดํ•˜์ง€๋งŒ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ์œ ํšจํ•œ ๋ชจ๋“ˆ๋กœ ๋ณ€ํ™˜ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋””ํŽœ๋˜์‹œ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • test: ๋ณ€ํ™˜์ด ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ (ํ•„์ˆ˜)
    • use: ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋กœ๋”๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์†์„ฑ (ํ•„์ˆ˜)
    • exclude: ๋ฐ”๋ฒจ๋กœ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์„ ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์ง€์ •
  • Plugins
    • ๋ฒˆ๋“ค์„ ์ตœ์ ํ™”ํ•˜๊ฑฐ๋‚˜ ์—์…‹์„ ๊ด€๋ฆฌํ•˜๊ณ , ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž… ๋“ฑ์˜ ๊ด‘๋ฒ”์œ„ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • Optimization(์ตœ์ ํ™”)
    • Webpack ๋ฒ„์ „ 4๋ถ€ํ„ฐ ์‹คํ–‰
    • minimize: TerserPlugin, optimization.minimize์— ๋ช…์‹œ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ฒˆ๋“คํŒŒ์ผ์„ ์ตœ์†Œํ™”(์••์ถ•)์‹œํ‚ค๋Š” ์ž‘์—… ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
    • minimizer: default minimizer์„ ์ปค์Šคํ…€๋ˆ TerserPlugin ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•ด์„œ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Mode
    • webpack์— ๋‚ด์žฅ๋œ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • development: ๋ชจ๋“ˆ๊ณผ ์ฒญํฌ์— ์œ ์šฉํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • production: ๋ชจ๋“ˆ๊ณผ ์ฒญํฌ, FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, TerserPlugin ๋“ฑ์— ๋Œ€ํ•ด ๊ฒฐ์ •์  ๋ง๊ธ€์ด๋ฆ„(mangled name)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • none: ๊ธฐ๋ณธ ์ตœ์ ํ™” ์˜ต์…˜์—์„œ ์ œ์™ธํ•œ๋‹ค.
  • Browser Compatibility

๐Ÿ“˜ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ

[udemy] React ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๊ฐ•์˜ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธˆ์”ฉ ์ด๋ผ๋„ ๊พธ์ค€ํžˆ ๋“ฃ๊ธฐ)

Study์›๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„

  • ํšŒ์›๊ฐ€์ž… ํผ ๊ตฌํ˜„

๐Ÿ“ ์ค‘์š”ํ•œ ๋‚ด์šฉ

  • ์›นํŒฉ์ด๋ž€?
  • ์›นํŒฉ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
  • ์›นํŒฉ ์‚ฌ์šฉ๋ฒ•
  • ๋ฒˆ๋“ค๋ง
  • ์›นํŒฉ์˜ ๊ฐœ๋…

๐Ÿ€ ์ฐธ๊ณ ์ž๋ฃŒ

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

22.07.27_TIL  (0) 2022.07.27
22.07.26_TIL  (0) 2022.07.26
22.07.22_TIL  (0) 2022.07.22
22.07.21_TIL  (0) 2022.07.21
22.07.19_TIL  (0) 2022.07.19