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
  • Style Loader + CSS Loader 구성
  • Button 컴포넌트
  • 모듈 번들링
  • 참고

Was this helpful?

  1. webpack
  2. Webpack 로더

CSS 로더

PreviousFile 로더NextPostCSS 로더

Last updated 4 years ago

Was this helpful?

Style Loader + CSS Loader 구성

, 패키지를 프로젝트에 설치한 후, Webpack 구성 파일의 모듈 규칙 안에 로더를 설정합니다.

npm i style-loader css-loader -D
module.exports = {
  module: {
    rules: [
      // CSS 파일 로더 설정
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader']
      }
    ]
  }
}

Button 컴포넌트

간단한 Button 컴포넌트를 만들어 스타일링 하는 실습을 진행해봅니다. 컴포넌트 클래스, CSS 스타일 파일을 작성합니다.

import { createElement, render } from '../../modules/DOM'
import './style.css'

/* -------------------------------------------------------------------------- */

class Button {
  constructor(props) {
    this.props = { ...props }
  }

  render(domNode = document.body) {
    const buttonNode = createElement('button', this.props)
    render(buttonNode, domNode)
  }
}

export default Button
.button {
  cursor: pointer;
  border: 0;
  border-radius: 4px;
  padding: 0.6em 0.94em;
  background: #111;
  color: #fff;
}

엔트리 파일(src/index.js)에서 Button 컴포넌트 모듈을 불러온 후, Button 생성/렌더링 하도록 작성합니다.

import { success } from './modules/LOGGER.js'
import Button from './components/Button'


// Button 컴포넌트 인스턴스 생성
const button = new Button({
  className: 'button',
  onClick(e) {
    success('Button 컴포넌트의 인스턴스를 클릭했습니다.')
  },
  children: 'Button 컴포넌트',
})

// Button 렌더링
button.render(rootNode)

모듈 번들링

bundle NPM 명령을 실행해 모듈을 번들링 합니다.

npm run bundle

오류 없이 번들링이 완료되어도 배포 디렉토리(dist) 안에는 CSS 파일이 보이지 않습니다. 이유가 뭘까요?

dist/
├── 861b3c3b709916519ce293d61ec0b0aa.png
└── main.js

웹 브라우저 개발 도구 Elements 패널을 확인해보면 이유를 알 수 있습니다. CSS 파일 로더는 기본적으로 HTML 문서의 <head> 영역에 인터널(internal) 스타일 방식으로 스타일 코드를 추가합니다.

참고

HTML 문서에 포함시키지 않고 별도의 CSS 파일로 내보내길 원한다면 을 참고하세요.

style-loader
css-loader
CSS 파일 추출
Asset Management | webpackwebpack
Logo