react로 프로젝트를 진행 함에 있어서 img 파일을 public, src 어디에 저장하고, 또 사용할 때 경로설정은 어떻게 해야하는지 알아보자
/project
├── /public
│ ├── index.html
│ ├── favicon.ico
│ └── /images
│ └── logo.png
└── /src
├── index.css
├── /assets
│ └── /images
│ └── profile.png
└── /components
└── NavBar.jsx
└── NavBar.css
공식 문서에서도 알 수 있다시피 public 폴더 내의 파일만 HTML에서 참조할 수 있다.
또한 %PUBLIC_URL%와 같이 사용하는 이유는 클라이언트 측 라우팅을 사용하거나 루트가 아닌 URL에 호스팅하는 경우에도 잘 작동하게 하기 위해서 이다.
<head> <!-- ... --> <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> <!-- ... --> </head>
jsx에서 절대경로는 public폴더를 기준으로 하기 때문에 위와 같이 PUBLIC_URL 환경변수를 사용 하여 접근 할 수 있다.
const NavBar = () => { return <img src={process.env.PUBLIC_URL + "/logo192.png"} alt="logo" />; };
import logo from "../assets/images/logo.png"; const NavBar = () => { return <img src={logo} alt="logo"></img>; };
.logo { background-image: url("/public/images/logo.png"); width: 100px; height: 100px; background-size: cover; }
.logo { background-image: url("/src/assets/images/logo.png"); width: 100px; height: 100px; background-size: cover; }