Webpack 러닝 가이드
  • Webpack 모듈 번들러
  • Web Modules
    • Legacy 모듈 관리
    • ES 모듈 관리
  • Babel
    • Babel JavaScript 컴파일러
    • Babel 독립형 빌드
    • Babel 노드 (Node.js) ✘
    • Babel CLI 구성
    • Babel 플러그인
  • webpack
    • Webpack 개발 환경 구성
      • Webpack 설치
      • Webpack 통합
      • Webpack 구성 파일
      • Webpack 워치
      • Webpack 모드
      • Webpack 별칭 등록
      • Webpack 호환성
      • Webpack 개발 서버
      • Webpack 멀티 페이지 설정
    • Webpack 로더
      • File 로더
      • CSS 로더
      • PostCSS 로더
      • Sass 로더
      • Babel 로더
      • TypeScript 로더
    • Webpack 플러그인
      • 환경 변수 등록
      • 빌드 결과 자동 정리
      • 빌드 결과 자동 주입
      • CSS 파일 개별 추출
      • CSS 파일 크기 최적화
      • CSS 미디어쿼리 스플리팅
      • 이미지 파일 크기 최적화
  • React
    • React App 매뉴얼 구성
      • Webpack 초기 구성
      • Babel 컴파일러 구성
      • CSS 스타일 구성
      • 이미지 구성
      • 환경변수 플러그인
      • HTML 플러그인
      • 최적화 구성
      • 코드 스플리팅
      • 개발 서버
      • 이미지, 폰트 에셋 구성
      • 환경 변수 + HTML 구성
      • 빌드 최적화 구성
      • 빌드 자동 정리 구성
      • 개발 서버 구성
      • 폴리필 구성
Powered by GitBook
On this page
  • 1. CSS 스타일 패키지 설치
  • 2. 로더 / 플러그인 구성
  • 3. CSS 모듈 구성 (옵션)
  • 4. PostCSS 모듈 구성 (옵션)
  • 5. Sass 모듈 구성 (옵션)

Was this helpful?

  1. React
  2. React App 매뉴얼 구성

CSS 스타일 구성

PreviousBabel 컴파일러 구성Next이미지 구성

Last updated 4 years ago

Was this helpful?

1. CSS 스타일 패키지 설치

, , 패키지를 프로젝트에 설치합니다.

npm i style-loader css-loader mini-css-extract-plugin -D

2. 로더 / 플러그인 구성

module에 CSS 스타일 로더(loader)를 구성합니다. 그리고 plugins 구성을 추가한 후 플러그인을 설정합니다.

const MiniCssExtractPlugin = require('mini-css-extract-plugin')
// ...
  
module.exports = (_env, argv) => {
  // ...
  return {
    // ...
    module: {
      rules: [
        // ...
        {
          test: /\.css$/i,
          use: [
            isProd ? MiniCssExtractPlugin.loader : 'style-loader',
            'css-loader',
          ],
        },
      ],
    },
    plugins: [
      new MiniCssExtractPlugin({
        filename: 'assets/css/[name].[contenthash:8].css',
        chunkFilename: 'assets/css/[name].[contenthash:8].chunk.css',
      }),
    ],
  }
}

3. CSS 모듈 구성 (옵션)

CSS 모듈은 css-loader 옵션 modules 값을 true 로 설정하면 사용 가능합니다. CSS 모듈(*.module.css) 파일에 적용하기 위한 새로운 규칙을 추가합니다.

// ...
  
module.exports = (_env, argv) => {
  // ...
  return {
    // ...
    module: {
      rules: [
        // style-loader, css-loader 구성
        {
          test: /\.css$/i,
          exclude: /\.module\.css$/i, // 모듈 파일 제외 설정
          use: ['style-loader', 'css-loader'],
        },
        // CSS Module ([filename].module.css)
        {
          test: /\.module\.css$/i,
          use: [
            'style-loader',
            {
              loader: 'css-loader',
              options: {
                modules: true,
              },
            },
          ],
        },  
      ],
    },
    // ...
  }
}

4. PostCSS 모듈 구성 (옵션)

npm i postcss-loader postcss-preset-env postcss-import -D

CSS, CSS 모듈 로더에 PostCSS 구성을 업데이트 합니다. 프로젝트 루트 위치에 PostCSS 구성 파일을 만들고 플러그인 구성을 추가합니다.

// ...
  
module.exports = (_env, argv) => {
  // ...
  return {
    // ...
    module: {
      rules: [
        // CSS
        {
          test: /\.css$/i,
          use: [
            isProd ? MiniCssExtractPlugin.loader : 'style-loader',
            { loader: 'css-loader', options: { importLoaders: 1 } },
            'postcss-loader',
          ],
        },
        // CSS 모듈
        {
          test: /\.module.css$/i,
          use: [
            isProd ? MiniCssExtractPlugin.loader : 'style-loader',
            {
              loader: 'css-loader',
              options: {
                modules: true,
                // 0 => 불러올 로더 없음 (기본 값)
                // 1 => postcss-loader
                importLoaders: 1,
              },
            },
            'postcss-loader',
          ],
        },
      ],
    },
    // ...
  }
}
module.exports = {
  plugins: [
    "postcss-import",
    [
      'postcss-preset-env',
      {
        browsers: '> 5% in KR, defaults, not IE < 11',
        // CSS Grid 활성화 [false, 'autoplace', 'no-autoplace']
        autoprefixer: { grid: 'autoplace' },
      },
    ],
  ]
};

5. Sass 모듈 구성 (옵션)

npm i sass-loader sass resolve-url-loader -D

Sass 모듈 규칙을 module 구성에 추가합니다.

// ...
  
module.exports = (_env, argv) => {
  // ...
  return {
    // ...
    module: {
      rules: [
        // Sass
        {
          test: /\.s[ac]ss$/,
          use: [
            isProd ? MiniCssExtractPlugin.loader : 'style-loader',
            {
              loader: 'css-loader',
              options: {
                // 2 => postcss-loader, sass-loader
                importLoaders: 2,
              },
            },
            'resolve-url-loader',
            {
              loader: 'sass-loader',
              options: {
                sourceMap: true,
              },
            },
          ],
        },        
      ],
    },
    // ...
  }
}

, , 패키지를 프로젝트에 설치합니다.

에서 유용한 플러그인을 찾아 프로젝트에 추가할 수 있습니다.

, , 패키지를 프로젝트에 설치합니다.

style-loader
css-loader
mini-css-extract-plugin
postcss-loader
postcss-preset-env
postcss-import
PostCSS 플러그인 디렉토리
sass-loader
sass
resolve-url-loader