- ์นํฉ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ๋ชจ๋ ๋ฟ ์๋๋ผ css, html, ์ด๋ฏธ์ง ๋ฆฌ์์ค ๋ฑ๋ฑ ๋ชจ๋ ๊ฒ์ ๋ชจ๋์ฒ๋ผ ๋ค๋ฃฐ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด ์ฃผ๋๊ฒ์ด ๋ฐ๋ก ๋ก๋์ ๋๋ค.
ย
๋ก๋๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ ์ผ์ ํ์ผ์ ์ง์ ํด์ ๋ก๋ ํจ์์์ ์ ํ ์ผ์ ์ฒ๋ฆฌํ๊ฒ ๋ง๋๋ ๊ฒ์
๋๋ค.
์ปค์คํ ๋ก๋ ๋ง๋ค๊ธฐ
- Loader ๋ก ์ฌ์ฉํ ํ์ผ ํ๋๋ฅผ ์์ฑํฉ๋๋ค.
- webpack.config.js ํ์ผ์์ ๋ก๋๋ฅผ ๋ฑ๋กํฉ๋๋ค.
ย
css-loader & style-loader
css-loader๊ฐ ํ๋ ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ css ๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ฝ๋ ์๋๋ฐ์ค๋ผ๋ ์๋น์ค๋ฅผ ์์๋์? ์ฌ๊ธฐ์๋ css๋ฅผ ๋ชจ๋์ฒ๋ผ ๋ถ๋ฌ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์์ ๋ก์ปฌ์์ ์ฌ์ฉํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ย
์ฐ๋ฆฌ๋ ์นํฉ์ผ๋ก css ๋ฅผ ๋ชจ๋์ฒ๋ผ ์ฌ์ฉํด๋ด
์๋ค.
- ๋ชจ๋๋ก ๋ถ๋ฌ์ฌ css ํ์ผ์ ์์ฑํฉ๋๋ค.
- App.js ํ์ผ์ import ๋ฌธ์ผ๋ก css ํ์ผ์ ๋ถ๋ฌ์ต๋๋ค.
- css-loader๋ฅผ ์ค์นํฉ๋๋ค.
npm install css-loader
ย
- webpack.config.js ํ์ผ๋ก ์ด๋ํด์ css-loader ๋ชจ๋์ ๋ฑ๋กํฉ๋๋ค.
์ฌ๊ธฐ๊น์ง ์ฒ๋ฆฌํ๋ฉด ์ผ๋จ main.js ์๋ css ํ์ผ์ด ๋ฌธ์์ด๋ก ๋ณํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์์ง html ํ์ผ์ ๋์ค์ง๋ ์๋๋ฐ์, ์์ง ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ค์ด์๋ css ์ฝ๋๋ฅผ html์ ๋ฃ์ด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ฅผ ์ํด ์ฌ์ฉํ๋๊ฒ์ด ๋ฐ๋ก style-loader์
๋๋ค.
ย
- Style-loader๋ฅผ ์ค์นํฉ๋๋ค.
npm install style-loader
- webpack.config.js ํ์ผ๋ก ์ด๋ํด์ style-loader ๋ชจ๋์ ๋ฑ๋กํฉ๋๋ค.
ย
ย
File-loader
์์ ๋ก๋๋ js ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ํ์ผ์ ๋ชจ๋์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ง์์ ๋๋ ธ์์ต๋๋ค. ์ด๋ฒ์๋ ์ด๋ฏธ์ง ํ์ผ์ ๋ชจ๋์ฒ๋ผ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค.
ย
์ด๋ฏธ์ง ํ์ผ์ ๋ชจ๋์์ ๋ถ๋ฌ์ค๊ฒ ๋๋ฉด ์ด๋ฏธ์ง์ ์ด๋ฆ์ด ํด์ ๊ฐ์ผ๋ก ๋ฐ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ ์ด๋ฏธ์ง๊ฐ ๊ฐฑ์ ๋์์ ๋ ํ์ผ๋ช
์ด ๊ธฐ์กด๊ณผ ๋์ผํ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ ํ ์ด์ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒฝ์ฐ๋ฅผ ๋ง๊ธฐ ์ํด์ ์
๋๋ค. ์บ์ฌ๊ฐ์ดย ๊ธฐ์กด์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ๋ถ๋ฅด๊ฒ ๋๋ ๊ฒฝ์ฐ์ ์ด๋ฏธ์ง๊ฐ ์
๋ฐ์ดํธ ๋์ง ์๋๋ก ํจ์ ๋ฐฉ์งํฉ๋๋ค.
ย
์๋ ์นํฉ5 ์ด์ ๊น์ง๋ ํ์ผ์ ๋ชจ๋๋ง ํ๊ธฐ ์ํด์๋ file-loader ๋ผ๋ ๋ก๋๋ฅผ ๋ฐ๋ก ์ค์นํด์ผ ํ์ง๋ง ์นํฉ5๋ก ์ค๋ฉด์ ๋ ์ด์ ํ์ํ์ง ์๊ฒ ๋์์ต๋๋ค.
ย
ย
ย
Base64 ํฌ๋ฉง์ผ๋ก ์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ
๊ฐ๋จํ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉํ์ง ์๊ณ ๋ฌธ์์ด๋ก ๊ทธ๋ ค๋ด๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ง์น svg ์ด๋ฏธ์ง๋ฅผ xml์ฝ๋๋ก ๊ทธ๋ ค๋ผ ์ ์๋ ๊ฒ ์ฒ๋ผ, ์ผ๋ฐ์ ์ธ ์ด๋ฏธ์ง ํ์ผ๋ base64๋ฌธ์์ด ํฌ๋ฉง์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
- webpack.config.js ์ asset/inline ๋ก๋(https://webpack.kr/guides/asset-modules/)๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ฐ๋ก ์ค์นํ ํ์๋ ์์ต๋๋ค. ์นํฉ5 ์ด์ ์๋ url-loader ๋ฅผ ๋ฐ๋ก ์ค์นํ์ด์ผ ํ์ง๋ง ์ด์ ๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. (https://v4.webpack.js.org/loaders/url-loader/)
- ์ด๋ ๊ฒ ๋ฌธ์์ด๋ก ํํ๋ ์ด๋ฏธ์ง๋ ๋ค์ด๋ก๋๋ฅผ ํ๋๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฆ ๋๋ค. ํ์ง๋ง ๋๋ฌด ๋ณต์กํ ์ด๋ฏธ์ง๋ฅผ base64๋ก ๋ง๋ค๊ฒ ๋๋ฉด ์คํ๋ ค ์ฝ๋๊ฐ ๋๋ฌด ๊ธธ์ด์ ๋ก๋ฉ์ด ๋๋ ค์ง ์ ์์ต๋๋ค.
- ๋ง์ฝ ๋ณ๊ฒฝํ๊ณ ์ถ์ ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ์ ํ์ ๋๊ณ ์ถ๋ค๋ฉด type์ โassetโ ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
type: 'asset', parser: { dataUrlCondition: { maxSize: 20 * 1024 // 20kb } },