PostCSS 완벽 가이드 | CSS 트랜스폼·Autoprefixer·Plugins·실전 활용

PostCSS 완벽 가이드 | CSS 트랜스폼·Autoprefixer·Plugins·실전 활용

이 글의 핵심

PostCSS로 CSS를 트랜스폼하는 완벽 가이드입니다. Autoprefixer, CSS Modules, Nesting, Tailwind CSS 통합까지 실전 예제로 정리했습니다.

실무 경험 공유: PostCSS를 도입하면서, 브라우저 호환성 문제가 해결되고 CSS 작성이 편리해진 경험을 공유합니다.

들어가며: “CSS 호환성이 걱정돼요”

실무 문제 시나리오

시나리오 1: Vendor Prefix를 수동으로 추가해요
번거롭고 실수하기 쉽습니다. Autoprefixer가 자동으로 추가합니다.

시나리오 2: 최신 CSS를 사용하고 싶어요
구형 브라우저는 지원하지 않습니다. PostCSS로 변환합니다.

시나리오 3: CSS Nesting이 필요해요
Native CSS는 제한적입니다. PostCSS Nesting으로 가능합니다.


1. PostCSS란?

핵심 특징

PostCSS는 JavaScript로 CSS를 트랜스폼하는 도구입니다.

주요 장점:

  • Plugins: 200+ 플러그인
  • Autoprefixer: 자동 Prefix
  • CSS Modules: 스코프 격리
  • Nesting: SCSS 스타일
  • 빠름: Rust 기반 (Lightning CSS)

2. 설치 및 기본 설정

설치

npm install -D postcss postcss-cli

postcss.config.js

아래 코드는 javascript를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

module.exports = {
  plugins: {
    autoprefixer: {},
  },
};

package.json

아래 코드는 json를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

{
  "scripts": {
    "css": "postcss src/styles.css -o dist/styles.css"
  }
}

3. Autoprefixer

설치

npm install -D autoprefixer

입력

아래 코드는 css를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

/* src/styles.css */
.container {
  display: flex;
  user-select: none;
}

출력

아래 코드는 css를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

/* dist/styles.css */
.container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}

4. CSS Nesting

설치

npm install -D postcss-nesting

postcss.config.js

아래 코드는 javascript를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

module.exports = {
  plugins: {
    'postcss-nesting': {},
    autoprefixer: {},
  },
};

입력

아래 코드는 css를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

.card {
  padding: 1rem;

  & .title {
    font-size: 1.5rem;
  }

  &:hover {
    background: #f0f0f0;
  }
}

출력

아래 코드는 css를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

.card {
  padding: 1rem;
}

.card .title {
  font-size: 1.5rem;
}

.card:hover {
  background: #f0f0f0;
}

5. CSS Modules

설치

npm install -D postcss-modules

postcss.config.js

아래 코드는 javascript를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

module.exports = {
  plugins: {
    'postcss-modules': {
      generateScopedName: '[name]__[local]___[hash:base64:5]',
    },
  },
};

6. Webpack 통합

npm install -D postcss-loader

아래 코드는 javascript를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

// webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader', 'postcss-loader'],
      },
    ],
  },
};

7. Vite 통합

Vite는 PostCSS를 자동으로 지원합니다.

아래 코드는 javascript를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

// postcss.config.js
module.exports = {
  plugins: {
    'postcss-nesting': {},
    autoprefixer: {},
  },
};

8. Tailwind CSS 통합

npm install -D tailwindcss
npx tailwindcss init

아래 코드는 javascript를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

// postcss.config.js
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
};

9. 실전 예제: 풀 설정

postcss.config.js

아래 코드는 javascript를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

module.exports = {
  plugins: {
    'postcss-import': {},
    'postcss-nesting': {},
    'tailwindcss/nesting': {},
    tailwindcss: {},
    autoprefixer: {},
    ...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {}),
  },
};

package.json

아래 코드는 json를 사용한 구현 예제입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

{
  "scripts": {
    "css": "postcss src/styles.css -o dist/styles.css",
    "css:watch": "postcss src/styles.css -o dist/styles.css --watch"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

정리 및 체크리스트

핵심 요약

  • PostCSS: CSS 트랜스폼 도구
  • Autoprefixer: 자동 Prefix
  • Plugins: 200+ 플러그인
  • CSS Nesting: SCSS 스타일
  • CSS Modules: 스코프 격리
  • Webpack/Vite: 완벽한 통합

구현 체크리스트

  • PostCSS 설치
  • Autoprefixer 설정
  • CSS Nesting 추가
  • CSS Modules 설정
  • Webpack/Vite 통합
  • Tailwind CSS 통합
  • 프로덕션 최적화
  • 브라우저 타겟 설정

같이 보면 좋은 글

  • Tailwind CSS 완벽 가이드
  • Webpack 완벽 가이드
  • CSS 완벽 가이드

이 글에서 다루는 키워드

PostCSS, CSS, Autoprefixer, Plugins, Build Tools, Frontend, Tailwind CSS

자주 묻는 질문 (FAQ)

Q. SCSS와 비교하면 어떤가요?

A. PostCSS가 더 빠르고 플러그인이 풍부합니다. SCSS는 더 성숙하고 기능이 많습니다.

Q. Tailwind CSS와 함께 사용하나요?

A. 네, Tailwind CSS는 PostCSS 플러그인입니다.

Q. 성능은 어떤가요?

A. 매우 빠릅니다. Lightning CSS를 사용하면 더 빠릅니다.

Q. 프로덕션에서 사용해도 되나요?

A. 네, 거의 모든 모던 프론트엔드 프로젝트에서 사용하고 있습니다.

... 996 lines not shown ... Token usage: 63706/1000000; 936294 remaining Start-Sleep -Seconds 3