IT/Webpack

BH] ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” webpack-bundle-analyzer ์‚ฌ์šฉ

Full~ day ๐Ÿ˜€ 2021. 11. 2. 16:59
728x90
๋ฐ˜์‘ํ˜•

์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ณ„์† ๊ฐœ๋ฐœํ•˜๊ณ  ์ •์‹ ์—†์ด ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด, ํ•„์š”์—†์ด ์šฉ๋Ÿ‰๋งŒ ๋Š˜๋ฆด๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์š”. ์ด๋Ÿด๊ฒฝ์šฐ ์›น์„ฑ๋Šฅ์€ ๋–จ์–ด์ง€๊ฒ ์ฃ ?... ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์ด ์˜ฌ๊ฑฐ์˜ˆ์š”. 

๋ฐ”์œ ์™€์ค‘์— ์ตœ์ ํ™”๊นŒ์ง€ ์‹ ๊ฒฝ์“ฐ๋ฉด์„œ ์ž‘์—…ํ•˜๋ฉด ์ •๋ง ์ข‹๊ฒ ์ง€๋งŒ,,,,,,,(ํŒŒ์ดํŒ…)

SPA๊ฐ™์€ ๊ฒฝ์šฐ ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ค ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ... ์ด๋ ‡๊ฒŒ ๋˜๋ฉด....์ฒจ์— ๋กœ๋”ฉํ•˜๋ฉด ํ™”๋ฉด์ด ๊ณ„์† ํ•˜์–—๊ฒŒ ๋‚˜์˜ค๊ฑฐ๋‚˜ ๋กœ๋”ฉ๋ฐ”๋ฅผ ๋„ฃ์—ˆ์œผ๋ฉด ํ•˜๋ฃจ์ข…์ผ(?)  ์žฅ์‹œ๊ฐ„ ๋กœ๋”ฉํ•˜๋‹ค๊ฐ€ ๋žœ๋”๋งํ•˜๊ฒŒ ๋ ๊ฑฐ์˜ˆ์š”.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— ์ตœ์ ํ™”๋ฅผ ์ข€ ํ•ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ์š”๋ž˜์กฐ๋ž˜ ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ผ๋‹จ ์ตœ์ ํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋А ๋ถ€๋ถ„๋ถ€ํ„ฐ ์†๋Œ€์•ผํ• ์ง€ ๋ง‰๋ง‰ ํ•  ์ˆ˜๋„์žˆ์–ด์š”. ํ”„๋กœ์ ํŠธ ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉด..์ตœ์ ํ™”ํ• ๊ฒŒ ์—†์„ ์ˆ˜๋„์žˆ๊ฒ ๋„ค์š”.

์•„๋ฌดํŠผ ์ตœ์ ํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ webpack-bundle-analyzer ์ด๊ฒƒ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ ํ™”์˜ ๊ณผ์ •์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • webpack-bundle-analyzer ์–ด๋–ค ๋ถ€๋ถ„์ด ์šฉ๋Ÿ‰์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š”์ง€
  • code split์€ ๋˜์–ด์žˆ๋Š”์ง€
  • garbage ์ œ๊ฑฐ

 

webpack-bundle-analyzer

# NPM
npm install --save-dev webpack-bundle-analyzer

npm install --save laravel-mix-bundle-analyzer //laravel-mix๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ตณ์ด ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ต๋‹ˆ๋‹ค.


# Yarn
yarn add -D webpack-bundle-analyzer

 

webpack.mix.js

require('laravel-mix-bundle-analyzer');

if (!mix.inProduction()) {
  mix.bundleAnalyzer();
}

 

webpack.config.js

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

module.exports = {
  plugins: [
    new BundleAnalyzerPlugin()
  ]
}

 

์ดํ›„ ๋นŒ๋“œ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด webpack-bundle-analyzer ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์น˜๋˜์–ด์žˆ๋Š” ํŒจํ‚ค์ง€๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ค๋ณด๋ฉด ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๋‚˜์˜ค๋„ค์š”.

http://127.0.0.1:8888/

aws-amplify๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ „์ฒด์— 5.61mb์ด๋„ค์š”. ใ… ใ… 

aws-amplify

์ด๋ ‡๊ฒŒ ์ œ์ผ ๋ฌด๊ฑฐ์šด ์• ๋“ค์€ ํ™”๋ฉด์—์„œ ํฌ๊ฒŒ ํ‘œ์‹œ๊ฐ€ ๋˜๊ณ  ์ž‘์€์• ๋“ค์€ ์—„์ฒญ ์ž‘๊ฒŒ ๋ณด์—ฌ์š”.

์ด ๊ธฐ์ค€์œผ๋กœ ํฌ๊ฒŒ ํ‘œ์‹œ๋œ ์•„์ด๋“ค๋งŒ ์ž˜ ํ™•์ธํ•ด์„œ ๋Œ€์ฑ„๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์œผ๋ฉด ๋ณ€๊ฒฝํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€์•Š์œผ๋ฉด ์ง€์šฐ๊ณ 

์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ตœ์ ํ™”๋ฅผ ํ•˜์…”์•ผํ•ด์š”.

์ตœ์ ํ™”๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜๋‹ค ๋นŒ๋“œ๋ฅผ ํ•ด๋ณด์‹œ๋ฉด ํ™•์‹คํžˆ ์ฐจ์ด๊ฐ€ ์žˆ์„๊ฑฐ์˜ˆ์š”.

์ตœ์ ํ™” ํ•˜๊ธฐ์ „์—๋Š” 5MB์˜€์–ด์š”.

์ž‘์—… ์ „

์ตœ์ ํ™” ํ›„์—๋Š” 4MB๋„ค์š”.

์ž‘์—… ํ›„

๋ฌผ๋ก  ์‚ฌ์šฉํ™˜๊ฒฝ์ด ์ข‹์€ ๊ณณ์—์„œ๋Š” ์–ผ๋งˆ๋‚˜ ์ฐจ์ด๊ฐ€ ๋‚ ๊นŒ์š”?

๋ณ„๋กœ ์ฐจ์ด ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค..

์‚ฌ์šฉํ™˜๊ฒฝ์ด ์ข‹์ง€ ์•Š์€ ๊ณณ์—์„œ๋Š” ์ตœ์ ํ™”์˜ ํšจ๊ณผ๊ฐ€ ์ข€ ๋‚˜ํƒ€๋‚˜์ง€์•Š์„๊นŒ ์‹ถ์–ด์š”.

 

code split

import T from 'T'

์ด๋ ‡๊ฒŒ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ T ํŒจํ‚ค์ง€๊ฐ€ 1MB๋ฉด ๊ณ ์Šค๋ž€ํžˆ ๋‹ค ๋“ค๊ณ  ์˜ค๊ฒŒ๋˜์–ด์š”.

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ •์ž‘ ์‚ฌ์šฉํ•˜๋Š”๊ฑด ๋ช‡๊ฐœ ์•ˆ๋˜๋Š”๋ฐ ์‹œ์Šคํ…œ๋งŒ ๋ฌด๊ฒ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ผด์ด ๋˜์–ด๋ฒ„๋ฆฌ์ฃ .

๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ importํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋‚˜์„ ๊ฒƒ ๊ฐ™์•„์š”. 

import { T1, T2 } from 'T'

๋ฌผ๋ก  ์ด๊ฒŒ ํ•ญ์ƒ ์ •๋‹ต์€ ์•„๋‹ ์ˆ˜๋„์žˆ์–ด์š”.

 

์•„ ๊ทธ๋ฆฌ๊ณ  vue.js ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” component๋ฅผ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœํ•ด์„œ ๋žœ๋”๋ง ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์–ด์š”.

garbage ์ œ๊ฑฐ

์ •๋ง ํ•„์š”์—†๋Š” ํŒŒ์ผ๋“ค์€ ์ง€์›Œ์ฃผ๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”.

๊ท€์ฐฎ์•„์„œ ์ž˜ ๊ด€๋ฆฌ๋Š” ์•ˆํ•˜๊ณ ์žˆ์—ˆ์ง€๋งŒ, ์ด๋ฒˆ๊ธฐํšŒ์— ๋‹ค ์ง€์›Œ๋ณด๊ธฐ๋กœ ํ–ˆ์–ด์š”.

์–ด์ฐจํ”ผ github๊ฐ€ ์žˆ์œผ๋‹ˆ๊น ๊ดœ์ฐฎ์„๊ฑฐ๋ž๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
LIST