Style Sheet/Bootstrap5

๐Ÿ”ฎ PurgeCSS ์‚ฌ์šฉ๋ฒ• - CSS ํ”„๋ ˆ์ž„์›Œํฌ ์ฝ”๋“œ ์ตœ์ ํ™”

์ธํŒŒ_ 2023. 4. 22. 11:55

purgecss

CSS ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ฌธ์ œ์ 

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ• ๋•Œ ์„œ๋น„์Šค ํ’ˆ์งˆ๊ณผ ์„ฑ๋Šฅ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ๋น ์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ด ์›น๋””์ž์ธ์ด๋‹ค. ์›น๋””์ž์ธ์€ ์‚ฌ์šฉ์ž์˜ ์ฒซ์ธ์ƒ๊ณผ ๋งŒ์กฑ๋„์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์›น๋””์ž์ธ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š๋‹ค. ๋ณต์žกํ•œ CSS ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋งŒ๋“ค๊ณ  ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์€ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋งŽ์€ ์›น ๊ฐœ๋ฐœ์ž๋“ค์€ Bootstrap, Foundation, Bulma, Pure.css, UIKit, Materialise, Tailwind์™€ ๊ฐ™์€ CSS ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. CSS ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ CSS ํด๋ž˜์Šค์™€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ์ผ๊ด€๋˜๊ณ  ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ณ ํ€„๋ฆฌํ‹ฐ์˜ ์›น๋””์ž์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ์—๋„ ์šฉ์ดํ•˜๋‹ค.

purgecss

๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฌํ•œ CSS ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ์˜จ๊ฐ– ๋””์ž์ธ ์š”์†Œ๋“ค์„ css ํด๋ž˜์Šค๋กœ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์—ฌ ํŒŒ์ผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์žฌ ๋‚ด ์„œ๋น„์Šค์— ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š์€ css ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด๋„ ๋ถˆํ•„์š”ํ•œ CSS ์ฝ”๋“œ๊ฐ€ ๋กœ๋”ฉ๋˜์–ด ์›น ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์†๋„๋ฅผ ์ €ํ•˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋””์ž์ธ๋„ ๋””์ž์ธ์ด์ง€๋งŒ ๋งŒ์ผ ์›น ํŽ˜์—์ง€ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋ฉด ์†Œ๋น„์ž๋“ค์€ ๋ง์„ค์ž„์—†์ด ๋’ค๋กœ ๊ฐ€๊ธฐ๋ฅผ ํ•ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค์— ์น˜๋ช…์ ์ด๊ฒŒ ๋œ๋‹ค. ๊ฑฐ๊ธฐ๋‹ค CSS ํŒŒ์ผ์„ ๋น„๋™๊ธฐ๋กœ ๋กœ๋“œํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ์ด ๊บ ์ ธ SEO์—๋„ ์ ์ˆ˜๊ฐ€ ๊นŽ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐํšŒ์ ์ธ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์€ ์ „๋ฌดํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

bootstrap

๋”ฐ๋ผ์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ CSS ํด๋ž˜์Šค ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ธ๋ฐ, ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ผ์ผํžˆ ๋Œ€์กฐํ•˜๋ฉฐ ํ•  ์ˆ˜๋„ ์—†๋Š” ๋…ธ๋ฆ‡์ด๋‹ค.

๊ทธ๋ž˜์„œ์ธ์ง€ Tailwind CSS ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ์ž์ฒด๋กœ CSS Tree Shaking ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ๋ถˆํ•„์š”ํ•œ CSS ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜์—ฌ ์›น ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์†๋„๋ฅผ ๊ฐœ์„ ํ•ด์ค€๋‹ค. Tailwind๋Š” ํ”„๋กœ๋•์…˜(Production) ๋นŒ๋“œ ์‹œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” CSS ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ฐพ์•„ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ ์ตœ์ข… CSS ๋ฒˆ๋“ค์€ ํ•„์š”ํ•œ ์ฝ”๋“œ๋งŒ ์žˆ๋Š” ์ž‘์€ ์šฉ๋Ÿ‰์˜ ํŒŒ์ผ์ด ๋˜๊ฒŒ ๋œ๋‹ค. 

Tailwind
์›นํŽ˜์ด์ง€์— ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” css ํด๋ž˜์Šค๋งŒ ๋นŒ๋“œํ•œ๋‹ค

๊ทธ๋Ÿผ Tailwind๋ฅผ ์ œ์™ธํ•œ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ๊ณผ ๊ฐ™์€ ๋‚˜๋จธ์ง€ CSS ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ด๋Ÿฌํ•œ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•„ ๊ณ ๋ ค๋Œ€์ƒ์—์„œ ์ œ์™ธ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?


PurgeCSS

 

Getting Started | PurgeCSS

Getting Started Most bundlers and frameworks to build websites are using PostCSS. The easiest way to configure PurgeCSS is with its PostCSS plugin. Install the PostCSS plugin: npm i -D @fullhuman/postcss-purgecss yarn add @fullhuman/postcss-purgecss --dev

purgecss.com

PurgeCSS๋Š” HTML, JS ๋“ฑ์˜ ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ๋œ CSS ์„ ํƒ์ž์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , CSS ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์„ ํƒ์ž๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์‚ฌ์‹ค Tailwind๋„ ์ž์ฒด์ ์œผ๋กœ PurgeCSS๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด CSS ํŠธ๋ฆฌ ์‰์ดํ‚น์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๊ฐ€๋ด๋„ Unused CSS์— ๋Œ€ํ•œ ์ตœ์ ํ™”๋กœ PurgeCSS๋ฅผ ์•ˆ๋‚ดํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

PurgeCSS

๋˜ํ•œ ๋‹ค์–‘ํ•œ ์›น ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ์“ฐ์ผ์ˆ˜ ์žˆ์œผ๋‹ˆ, ํ™•์žฅ์„ฑ๋„ ์ข‹๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค

PurgeCSS


PurgeCSS CLI ์‚ฌ์šฉ๋ฒ•

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์•„์ฃผ ๊ธฐ์ดˆ์ ์ธ ์ปค๋งจ๋“œ ๋ผ์ธ ์‚ฌ์šฉ๋ฒ•๋งŒ์„ ์†Œ๊ฐœํ•œ๋‹ค. ๋งŒ์ผ React๋‚˜ Webpack๊ณผ ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ˜ผํ•ฉ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์˜ ๊ฐ€์ด๋“œ ๋งํฌ์—์„œ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

 

1. PurgeCSS๋ฅผ ํ”„๋กœ์ ํŠธ์— ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.

# purgecss๋Š” dev์šฉ์ด๋‹ˆ devDependencies์— ์„ค์น˜
> npm i --save-dev purgecss

 

2. CSS ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ ์šฉํ•œ html or js์™€ css ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ํด๋”์— ์œ„์น˜ ์‹œํ‚จ๋‹ค

PurgeCSS

  • dist : ์ตœ์ ํ™”๋œ css ํŒŒ์ผ์„ ๋‹ด์„ ํด๋”
  • b-boot.css : ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ†ต์งœ ํŒŒ์ผ
  • index.html : ๋ถ€ํŠธ์ŠคํŠธ๋žฉ CSS ์ฝ”๋“œ๊ฐ€ ์ ์šฉ๋œ ์›นํŽ˜์ด์ง€ ๋ฌธ์„œ
<!-- ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํด๋ž˜์Šค ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ๋œ html ํŒŒ์ผ -->
<!DOCTYPE html>
<html>
<head>
    <title>Bootstrap Sample</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
      <div class="row">
        <div class="col-sm-6">
          <h2 class="ps-md-6 m-5">Column 1</h2>
          <p>Some text..</p>
        </div>
        <div class="col-sm-6">
          <h2>Column 2</h2>
          <p>Some text..</p>
        </div>
      </div>
    </div>
</body>
</html>

 

3. ์•„๋ž˜ CLI ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

> npx purgecss --css [๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํŒŒ์ผ] --content [html or js ํŒŒ์ผ] --output [๊ฒฐ๊ณผ๋ฌผ์„ ์ €์žฅํ•  ํด๋”]

> npx purgecss --css bootstrap/b-boot.css --content bootstrap/index.html --output bootstrap/dist
Options:
  -V, --version                        ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค
  -con, --content <files...>           ์ฝ˜ํ…์ธ  ํŒŒ์ผ์˜ ๊ธ€๋กœ๋ธŒ ํŒจํ„ด
  -css, --css <files...>               CSS ํŒŒ์ผ์˜ ๊ธ€๋กœ๋ธŒ ํŒจํ„ด
  -c, --config <path>                  ์„ค์ • ํŒŒ์ผ์˜ ๊ฒฝ๋กœ
  -o, --output <path>                  ์ •๋ฆฌ๋œ CSS ํŒŒ์ผ์„ ์“ธ ํŒŒ์ผ ๊ฒฝ๋กœ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ
  -font, --font-face                   ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฐํŠธ ํŽ˜์ด์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์˜ต์…˜
  -keyframes, --keyframes              ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ‚คํ”„๋ ˆ์ž„์„ ์ œ๊ฑฐํ•˜๋Š” ์˜ต์…˜
  -v, --variables                      ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์˜ต์…˜
  -rejected, --rejected                ์ œ๊ฑฐ๋œ ์„ ํƒ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์˜ต์…˜
  -rejected-css, --rejected-css        ์ œ๊ฑฐ๋œ CSS๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์˜ต์…˜
  -s, --safelist <list...>             ์ œ๊ฑฐ๋˜์ง€ ์•Š์•„์•ผ ํ•  ํด๋ž˜์Šค์˜ ๋ชฉ๋ก
  -b, --blocklist <list...>            ์ œ๊ฑฐ๋˜์–ด์•ผ ํ•  ์„ ํƒ์ž์˜ ๋ชฉ๋ก
  -k, --skippedContentGlobs <list...>  ์Šค์บ”๋˜์ง€ ์•Š์•„์•ผ ํ•  ํด๋”/ํŒŒ์ผ์˜ ๊ธ€๋กœ๋ธŒ ํŒจํ„ด ๋ชฉ๋ก
  -h, --help                           ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ๋„์›€๋ง์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค

 

4. CSS ์ตœ์ ํ™”๋œ ๊ฒฐ๊ณผ๋ฌผ์ด ๋‚˜์˜ค๋ฉด ์›๋ณธ ํŒŒ์ผ ๋Œ€์‹  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

PurgeCSS