๐Ÿ“–
Mini's Today I Learned
  • Today I Learned
  • ๐Ÿ’ปComputer Science
    • ๐ŸงฑComputer Science
      • Computer Architecture
    • ๐Ÿฆ•OperatingSystem
      • System Structure
      • 01. ์šด์˜์ฒด์ œ ์—ญํ• 
      • 02. History๋กœ ์ดํ•ดํ•˜๋Š” ์šด์˜์ฒด์ œ
      • 03. ์šด์˜์ฒด์ œ ๊ตฌ์กฐ
      • 04. ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ฅด๋ง
      • 05. ์Šค์ผ€์ฅด๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • 06. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ์™€ ์Šค์ผ€์ฅด๋Ÿฌ
      • 07. ์ธํ„ฐ๋ŸฝํŠธ
      • 08. ํ”„๋กœ์„ธ์Šค์™€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ
      • 09. ํ”„๋กœ์„ธ์Šค๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜(IPC ๊ธฐ๋ฒ•)
      • 10. Thread(์Šค๋ ˆ๋“œ)
      • 11. ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ (Virtual Memory System)
      • 12. ํŒŒ์ผ์‹œ์Šคํ…œ ์ดํ•ด
      • 13. ๋ถ€ํŒ…์˜ ์ดํ•ด
      • 14. ๊ฐ€์ƒ๋จธ์‹ (Virtual Machine)
  • ๐Ÿ“ˆDatabase
    • MySQL CLI (Frequently used)
    • 1-Tier, 2Tier, 3Tier
    • Basic SQL
    • Built in function
    • Sub Query
    • View
    • Stored Program
    • index
    • Normalization(์ •๊ทœํ™”)
    • Transaction
    • Transaction
  • ๐ŸŒ Network
    • ๐Ÿ”Œ TCP&IP Basic
      • 01 TCP/IP ๋ง›๋ณด๊ธฐ
      • 02 TCP/IP ๊ฐœ์š”
      • 03 ํ†ต์‹  ์„œ๋น„์Šค์™€ ํ”„๋กœํ† ์ฝœ
      • 04 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต
      • 05 ํŠธ๋ Œ์ŠคํฌํŠธ ๊ณ„์ธต
      • 06 ๋„คํŠธ์›Œํฌ๊ณ„์ธต
      • 07 ๋ฐ์ดํ„ฐ ๊ณ„์ธต๊ณผ ๋ฌผ๋ฆฌ๊ณ„์ธต
      • 08 ๋ผ์šฐํŒ…
      • 09 ๋ณด์•ˆ
      • 10 HTTP ํ”„๋กœํ† ์ฝœ
    • ๐Ÿฟ๏ธHTTP ์™„๋ฒฝ ๊ฐ€์ด๋“œ ์š”์•ฝ
      • 1. HTTP: ์›น์˜ ๊ธฐ์ดˆ
      • 2. URL ๊ณผ ๋ฆฌ์†Œ์Šค
      • 3. HTTP Message
      • 4. Connection Management
      • 5. Overview of web server architectures
      • 6. Proxies
      • 7.Caching
      • 8. Integration Points: Gateways, Tunnels, and Relays
      • 9. Web Robots
      • 10. HTTP/2.0
      • 11. Client Identification and Cookies
      • 12. Basic Authentication
      • 13. Digest Authentication
      • 14. Secure HTTP
      • 15. Entities and Encodings
      • 16. Internationalization
      • 17. Content Negotiation and Transcoding
      • 18. Web Hosting
  • ๐ŸดLanguage
    • โ˜•JAVA
      • Comparable vs Comparator
  • ๐Ÿ› ๏ธ Framework
  • ๐ŸงฉDesign Pattern
    • ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™ (SOLID)
    • Design Pattern ๊ฐœ์š”
    • Template method
    • Singleton
  • ๐ŸฅFrontEnd
    • HTML&CSS
      • 01 Intro
      • 02 HTML Basic
      • 03 Content Section
      • 04 Block and Inline Elements
      • 05 Text Contents
      • 06 Inline Elements
      • 07 Multi Media
      • 08 Table&Form&etc
      • 09 Global Attribute & etc
      • 10 css basic
      • 11 css config
      • 12 css unit
      • 13 Box Model
      • 14 Font & Text
      • 15 Float(๋„์›€) & Position
      • 16 Background
      • 17 Transitions & Transforms
      • 18 Animation & Multi Columns(๋‹ค๋‹จ)
      • 19 Flex
      • 20 Grid
    • Sass(SCSS)
    • TypeScript
    • Webpack Introduction
      • ์›นํŒฉ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ
      • CommonJS
      • ESM
      • WebpackConfig
        • 1. Handlebars
        • 2. Caching
        • 3. Minification & Mangling
        • 4. Mode(Development mode & Production Mode)
        • 5. ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋ชจ๋“ˆ๋กœ ๋‹ค๋ฃจ์–ด๋ณด๊ธฐ(file-loader)
        • 6. ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋ชจ๋“ˆ๋กœ ๋‹ค๋ฃจ์–ด๋ณด๊ธฐ(url-loader)
        • 7. SASS Loader
        • 8. Post CSS
        • 9. BLOWSERS LIST
        • 10. Stylelint
        • 11. Babel
      • Webpack-Practice
    • ETC
      • GIT
      • MarkDown
Powered by GitBook
On this page

Was this helpful?

  1. FrontEnd
  2. Webpack Introduction
  3. WebpackConfig

3. Minification & Mangling

Previous2. CachingNext4. Mode(Development mode & Production Mode)

Last updated 4 years ago

Was this helpful?

  • ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” resource์–‘์ด ์ปค์ง€๋ฉด ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ์ปจํ…์ธ  ๋„์ฐฉ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง.

    ๊ทธ๋ž˜์„œ, ์ตœ์ข…์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋“ค์˜ ํ˜•ํƒœ๋Š” ๋ถˆํ•„์š”ํ•œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ ์ตœ์ ํ™”๋œ ์ƒํƒœ๊ฐ€ ๋˜์–ด์•ผํ•˜๋Š”๋ฐ, ์†Œ์Šค์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋“ค์„ ์ตœ์ ํ™”ํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ธฐ.

  • ๋ชจ๋“œ๊ฐ’์ด production์ธ ๊ฒฝ์šฐ, ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์••์ถ•๋œ ์ƒํƒœ๋ฅผ ํ™•์ธํ–ˆ์—ˆ๋Š”๋ฐ mode๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์ตœ์ ํ™”ํ•จ์œผ๋กœ์จ js๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์ž์›๋“ค๋„ ์–ด๋–ป๊ฒŒ ์ตœ์ ํ™” ์‹œํ‚ค๋Š”์ง€ ์•Œ์•„๋ณด์ž.

  • ์ฝ”๋“œ์˜ ํ˜•ํƒœ๋ฅผ ์••์ถ•

  • ์••์ถ•๊ณผ์ •์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ

    • Minification

      • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•˜๋Š” ๊ณผ์ •์— ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š” ์š”์†Œ ์ œ๊ฑฐ(์ฃผ์„, console.log,..) - ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ฌ

      • ํ‘œํ˜„์„ ๊ฐ„๊ฒฐํ™” (๋“ค์—ฌ์“ฐ๊ธฐ ๋˜๋Š” ๋„์–ด์“ฐ๊ธฐ ๊ณต๋ฐฑ์„ ์ตœ๋Œ€ํ•œ ์งง๊ฒŒ, ๋ถ„๊ธฐ๋ฌธ์„ ๋ธ”๋Ÿญํ˜•์‹ ๋Œ€์‹  ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ ํ‘œํ˜„ ๋“ฑ)

    • Minification: ํ‘œํ˜„์˜ ๋‚œ๋…ํ™”(uglify)

      • ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ํด๋ž˜์Šค ์ด๋ฆ„๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ‘œํ˜„์„ ์•ŒํŒŒ๋ฒณ ํ•œ๋‘๊ธ€์ž๋กœ ์น˜ํ™˜.

      • ์™ธ๋ถ€์—์„œ ์ฝ”๋“œ๋ฅผ ๋ดค์„๋•Œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ฌ, ์šฉ๋Ÿ‰์ค„์ž„

  • ์œ„์™€๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด, ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์••์ถ•๋œ ํ˜•ํƒœ๋กœ ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ ๋„คํŠธ์›Œํฌ์— ์ด ์ตœ์ ํ™”๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ „๋‹ฌ์ด ๋˜๊ณ  ์ตœ์ ํ™”๋œ ๋ฆฌ์†Œ์Šค๋“ค์ด ์บ์‹ฑ์œผ๋กœ ์ €์žฅ๋˜๋ฉด ์‚ฌ์šฉ์ž๋“ค์ด App์„ ์‚ฌ์šฉํ•  ๋•Œ ๋” ๋น ๋ฅด๊ฒŒ ๋™์ž‘์‹œํ‚ฌ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

  • ์‹ค์Šต

    • HTML Markup ์ตœ์ ํ™”

      • html-webpack-plugin์„ค์ •์—์„œ ์ œ๊ณต๋˜๋Š” key์ค‘ minify์ด๋ผ๋Š” key๊ฐ€ ์ œ๊ณต๋จ.

      • mark up ์ด ์ƒ์„ฑ๋ ๋•Œ mark up ์ปจํ…์ธ ๊ฐ€ ์ตœ์ ํ™”๋˜๋Š” ๊ณผ์ •์„ ํ•จ๊ป˜ ์ง„ํ–‰ํ•จ

      • ๊ฐ์ฒดํ˜•ํƒœ๋กœ ์ง€์ •ํ•ด์„œ ์„ ํƒ์ ์œผ๋กœ (์ผ๋ถ€๋งŒ) ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

      • html-webpack-plugin ๋ฌธ์„œ ํ™•์ธ. (minify๊ฒ€์ƒ‰ ์ƒ์„ธ ๋งํฌ ํด๋ฆญ)

      • ์‹ค์Šต์—์„œ๋Š” ๊ณต๋ฐฑ์„ ์ค„์ด๋Š”๊ฒƒ, doctype์„ ์งง๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ, type attribute ์ œ๊ฑฐ ์‚ฌ์šฉ

      • plugin ์— minify key์™€ ์˜ต์…˜ ์ถ”๊ฐ€

        minify:{
                  collapseWhitespace: true,
                  useShortDoctype: true,
                  removeScriptTypeAttributes: true, //script์— type attribute ์ œ๊ฑฐ
              },
      • ๋นŒ๋“œ ํ›„, ๊ฒฐ๊ณผํ™•์ธ

    • CSS ์ตœ์ ํ™”

      • cssํŒŒ์ผํฌ๊ธฐ ์••์ถ•()

      • ์Šคํƒ€์ผ์„ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ œ๊ณต

      • css-nano๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด css๋ฅผ ์ตœ์†Œํ™” ํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ณ , ์••์ถ•๋ฅ  ์ •๋ณด๋„ ํ™•์ธ์ด ๊ฐ€๋Šฅ

      • css-nano module์„ค์น˜ํ•˜๊ธฐ

        npm i -D cssnano
      • npm i -D optimize-css-assets-webpack-plugin
      • webpack plugins ์„ค์ •

        plugins: [
          new OptimizeCssAssetsPlugin({
            assetNameRegExp: /\.css$/g,
            cssProcessor: require('cssnano'),
            cssProcessorPluginOptions: {
              preset: ['default', { discardComments: { removeAll: true } }],
            },
            canPrint: true,
          }),
        ];
      • plugin์€ ์™ธ๋ถ€ ๋ชจ๋“ˆ์ด๋ฏ€๋กœ ๋ถˆ๋Ÿฌ์™€์•ผํ•จ

        const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
      • build๊ฒฐ๊ณผ (dist/~~.cssํ™•์ธํ•ด๋ณด๊ธฐ) => ์••์ถ• ์ž˜ ๋˜์—ˆ๋‹ค!

    • JS์ตœ์ ํ™”

      • css์ฒ˜๋Ÿผ js compressor ์‚ฌ์šฉ

      • ๋Œ€ํ‘œ

        • uglify.js

        • babel-minify

        • terser

      • ์›นํŒฉ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฑ„ํƒํ•˜๋Š” terser ์‚ฌ์šฉํ•ด๋ณผ ๊ฒƒ

      • ์›นํŒฉ์˜ ์˜์กด์„ฑ์— ํฌํ•จ๋œ ๋ชจ๋“ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ terser๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๋Š” ์—†๊ณ , optimizationํ‚ค์— ์ž‘์„ฑ ํ•ด์ฃผ๋ฉด๋œ๋‹ค.

        • optimization ๋‚ด๋ถ€์— minimize๋ผ๋Š” ํ‚ค๋ฅผ true๋ฅผ ํ•˜๋ฉด, ์›นํŒฉ ๋‚ด๋ถ€์—์„œ terser๋ฅผ ์‹คํ–‰์‹œ์ผœ ์••์ถ• ์ง„ํ–‰.

        • minimizer ํ‚ค์—์„œ ์–ด๋–ค compressor๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๋ณ„๋„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ.(uglify, babel-mini)

        • terser๋ฅผ ์ž‘์„ฑํ•œ ์ด์œ ?: terser customizeํ•˜๊ธฐ ์œ„ํ•ด์„œ

        • minimize๋งŒ true๋กœ ํ•ด๋‘๋ฉด ๊ธฐ๋ณธ๋™์ž‘๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ.

          • ๋น ๋ฅด๊ฒŒ cache๋˜๋„๋ก ์„ค์ •ํ•จ(๋นŒ๋“œ ๋˜๋Š” ์‹œ๊ฐ„ ์ค„์ž„)

      • ํ˜น์‹œ terserํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฉด, node_modulesํ™•์ธ! (webpack์„ค์น˜ํ• ๋•Œ ๊ฐ™์ด ์„ค์น˜๋˜์—ˆ์Œ)

      • terser-webpack-plugin ์„ค์น˜(์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ)

         npm i terser-webpack-plugin -D
      • webpack.config.js ์ˆ˜์ •

        modules.exports = {
          optimizations: {
            minimize: true,
            minimizer: [
              new TesrserWebpackPlugin({
                cache: true,
              }),
            ],
          },
        };
๐Ÿฅ
readme.md
css-nano compressor
optimize-css-assets-webpack-plugin ์„ค์น˜