npm 패키지

react-esbuild 패키지에서 css 모듈 사용하기

syleemomo 2024. 6. 12. 10:21
728x90
import React from 'react'
import './App.css'
import logo from './logo.svg'
import logo2 from './logo-2.png'
import { REACT_APP_BASE_URL } from 'env'
import * as AppStyle from './App.module.css'
import Button from './Button'

const App = () => {
    console.log(REACT_APP_BASE_URL)
    console.log(AppStyle)

    return (
        <div className='App'>
            <h1 className={AppStyle.button}>Hello, react & esbuild ! </h1>
            <img className={AppStyle.input} src={logo} alt="logo" width={500} height={500}/>
            <img src={logo2} alt="logo-2"/>
            <Button></Button>
        </div>
    )
}
export default App

App.js 파일을 위와 같이 작성한다. 

import * as AppStyle from './App.module.css'

AppStyle 은 App.module.css 파일에 정의된 모든 클래스 속성을 객체형태로 가지고 있다. 

import Button from './Button'

Button 컴포넌트를 사용하기 위하여 임포트한다.

<h1 className={AppStyle.button}>Hello, react & esbuild ! </h1>
<img className={AppStyle.input} src={logo} alt="logo" width={500} height={500}/>

AppStyle 객체의 특정 클래스명으로 스타일을 설정한다. 

.button{
    background-color: skyblue;
}
.input{
    background-color: yellow;
}

App.module.css 파일은 위와 같다. 

import React from 'react'
import { button } from './button.module.css'

const Button = () => <button className={button}>프론트버튼</button>

export default Button

Button.js 파일은 위와 같다. 

import { button } from './Button.module.css'

css 모듈에서 특정 클래스명 하나만 조회할때는 위와 같이 하면 된다.

.button{
    background-color: brown;
}

Button.module.css 파일은 위와 같다. 

body{margin:0;padding:0;box-sizing:border-box}.App{text-align:center}.o{background-color:#87ceeb}.r{background-color:#ff0}.b{background-color:brown}

build 폴더의 bundle.css 파일을 열어보면 위와 같다. App.module.css 파일과 Button.module.css 파일에 동일한 button 이라는 클래스명이 존재하더라도 빌드후에는 esbuild 가 자동으로 클래스명이 충돌하지 않도록 변경해준다. 

728x90