css module 이 번들되는 과정

1. CSS 파일 처리

	module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,  // 모든 .css 파일에 대해
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              modules: true,  // CSS 모듈로 처리
            },
          },
        ],
      },
    ],
  },
};

혹은 일부 프레임워크에서는 import 문에 명식적으로 css module 임을 지정할 수 있다.

import styles from './styles.css?module'

2. JavaScript 와 연결

.button {
  background: blue;
  color: white;
}
import styles from './Button.module.css';

function Button() {
  return <button className={styles.button}>Click me</button>;
}

빌드 과정에서 styles 객체는 아래와 같이 생성됨.

{ button: "_Button_button_1a2b3c" }

그렇다면 classnames 와 같은 라이브러리랑은 어떻게 연결되는걸까?

그러면 추출된 css 파일에도 해당 클래스이름을 어떻게 반영할까?

._Button_button_1a2b3c {
  background: blue;
  color: white;
}

3. 번들링