はじめに
create-react-app
コマンドで React プロジェクトを作った場合。
以下のコードだとimg.png
が表示されないけど、
App.js
import logo from "./logo.svg";
function App() {
return (
<div className="App">
<img src={logo} className="App-logo" alt="logo" />
<img src="./img.png" />
</div>
);
}
export default App;
次のコードだと表示されるやつ。
App.js
import logo from "./logo.svg";
import img from "./img.png";
function App() {
return (
<div className="App">
<img src={logo} className="App-logo" alt="logo" />
<img src={img} />
</div>
);
}
export default App;
build
最初のコードでbuild
したときのディレクトリ構造。
build/static/media
の中に、img.png
は入ってない。
build
- static
- js
- css
- media
- logo.svg
画像が表示される方のコードでbuild
したときのディレクトリ構造。
build/static/media
にimg.png
が含まれている。
build
- static
- js
- css
- media
- logo.svg
- img.png
Webpack
import img from "./img.png"
と書くことで、Webpack に「このファイル使うのでビルドに含めてください」と伝えられる。
ただし使用する画像数が多いと build ファイルが大きくなってしまうので、その場合は画像を public フォルダ内や外部サーバに置いたりする。