Allini๋ Create React App(CRA)์ ์ฌ์ฉํ์ง ์๊ณ , ์ง์ Webpack๊ณผ Babel์ ์ค์ ํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
ํ์ฌ์์ Webpack์ ์ค์ ํด๋ณธ ๊ฒฝํ์ด ์์ด, ์ฒ์์๋ ๊ทธ ๊ธฐ์ต์ ์์กดํด ์์
์ ์์ํ์ด์.
๊ทธ๋ฐ๋ฐ ํ๋ก์ ํธ ์งํ ๋์ค Pretendard-Black.subset.woff2 ๋ฐ Pretendard-ExtraBold.subset.woff2 ํฐํธ ํ์ผ์ ์ฐพ์ ์ ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด ์๋ฌ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ผ ์์น, font.css์ ๊ฒฝ๋ก, ํ์ผ๋ช , ๋น๋ ์บ์ ์ญ์ ๋ฑ ๋ค์ํ ๋ฐฉ๋ฒ์ ์๋ํ์ง๋ง,
๋ฌธ์ ๋ ์ฌ์ ํ ํด๊ฒฐ๋์ง ์์๊ณ ..๐ข
์ ๊ฐ ์์ฑํ Webpack ์ค์ ์์ฒด์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด ์๋๊ฐ ์์ฌํ๊ฒ ๋์ต๋๋ค.
Webpack ์ค์ ์ ๊ฒ: file-loader๋ ์ ๋ฑ๋กํ๋๋ฐ...
์๋ฌ๊ฐ ๋ฐ์ํ ์ด์ ๋ฅผ ์ฐพ๊ธฐ ์ํด webpack.config.js ํ์ผ์์ ํ์ผ ๋ก๋ ์ค์ ์ ํ์ธํ์ต๋๋ค.
file-loader๋ฅผ ์๋์ ๊ฐ์ด ์ค์ ํด๋์๊ธฐ์, ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์์ฃ ..!
{
test: /\.(png|jpe?g|gif|webp)$/i,
use: [
{
loader: "file-loader",
options: {
name: "[path][name].[ext]",
},
},
],
}
๊ทธ๋ ๊ธฐ์ ์ด ์ค์ ์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จํ๊ณ , ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ๋์ ํ ์ดํด๊ฐ ๋์ง ์์์ต๋๋ค.
์๋ฑํ ๊ณ ๋ฏผ: MSW๊ฐ ๋ฌธ์ ์ธ๊ฐ?
์ด์ฏค ๋๋ MSW(Mocking Service Worker)๊ฐ ํฐํธ ํ์ผ์กฐ์ฐจ ๊ฐ๋ก์ฑ๋ ๊ฒ์ด ์๋๊ฐ ํ๋ ์๋ฑํ ์๊ฐ๊น์ง ํ๊ฒ ๋์์ด์..!
MSW๋ ๋ฐฑ์๋๊ฐ ๊ตฌ์ถ๋๊ธฐ ์ ์ ํ๋ก ํธ์๋ UI ๊ฐ๋ฐ์ ์ํด ์ฌ์ฉ ์ค์ด์์ต๋๋ค.
ํ์ง๋ง ๊ณต์ ๋ฌธ์๋ฅผ ์ฝ์ด๋ณธ ๊ฒฐ๊ณผ, MSW๋ ์ ์ ๋ฆฌ์์ค(์: ํฐํธ ํ์ผ)์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
MSW๊ฐ ํฐํธ ํ์ผ ์์ฒญ์ ๊ฐ๋ก์ฑ์ง ์๋ ํ, ์ด ๋ฌธ์ ๋ MSW์ ๊ด๋ จ์ด ์์ ๊ฐ๋ฅ์ฑ์ด ๋์์ต๋๋ค.
์ง์ง ๋ฌธ์ : Webpack ๋ฒ์ ์ฐจ์ด
๊ณ ๋ฏผ์ ๊ฑฐ๋ญํ๋ ์ค, ํน์ ๋ด๊ฐ ์๊ณ ์๋ Webpack ์ค์ ๊ณผ ํ์ฌ ์ฌ์ฉํ๋ ๋ฒ์ ๊ฐ์ ์ฐจ์ด๊ฐ ์๋ ๊ฒ์ ์๋๊น ํ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
์ด ์๊ฐ์ด ๋ฐ๋ก ์ ๋ต์ด์์ฃ !!! แฆ( แ )แก
Webpack 5์์๋ ํ์ผ ๋ก๋ ์ค์ ์ด ๊ฐ์ํ๋์๊ณ , ๋ ์ด์ file-loader๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์์ต๋๋ค.
Webpack 5์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค:
{
test: /\.(jpg|jpeg|gif|png|svg|eot|woff|ttf)$/i,
type: "asset/resource",
}
Webpack 5์์๋ file-loader์ url-loader๋ฑ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๊ณ , asset/resource, asset/inline, ๊ทธ๋ฆฌ๊ณ asset์ ํตํด ํ์ผ์ ์ฒ๋ฆฌํฉ๋๋ค.
- asset/resource: ๋ณ๋์ ํ์ผ์ ๋ด๋ณด๋ด๊ณ URL์ ๋ฐํํฉ๋๋ค. (file-loader ๋์ฒด)
- asset/inline: ๋ฐ์ดํฐ URL๋ก ๋ด๋ณด๋ด๊ธฐ (url-loader ๋์ฒด)
- asset: ์๋์ผ๋ก ๋ฐ์ดํฐ URL๊ณผ ํ์ผ ๋ด๋ณด๋ด๊ธฐ ์ค ์ ํํ๋ฉฐ, ๊ธฐ์กด์ ํฌ๊ธฐ ์ ํ ์ค์ ๋ ํฌํจ๋ฉ๋๋ค.
๋ ์์ธํ ๋ด์ฉ์ ์ฐธ๊ณ ํ๋ Webpack ๊ณต์ ๋ฌธ์ ๋งํฌ๋ฅผ ๋จ๊ฒจ๋๊ฒ์!!
ํ์ต ๋ฐฉ์์ ๋ํ ๋ฐ์ฑ, ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก์ ๊ณํ
์ด์ ์ TOAST Editor๊ฐ React 17 ๋ฒ์ ๊น์ง๋ง ์ง์๋๋ค๋ ์ด์๋ฅผ ๊ฒช์๋ ์ ์ด ์์ต๋๋ค.
๋ถ๋๋ฝ์ง๋ง ๊ทธ๋๋ ์ด์ ์ง์์๋ง ์์กดํ๋ ํ์, ์ฌ์ฉ๋ ๊ธฐ์ ์คํ์ ๋ํด ์ถฉ๋ถํ ๊ฒํ ํ์ง ์์๋ ๊ฒฝํ์ด ์์์ต๋๋ค.
์ด๋ฒ Webpack ์ค์ ๋ฌธ์ ๋ฅผ ๊ฒช์ผ๋ฉด์, ๋ค์ ํ ๋ฒ ์ ์ ํ์ต ๋ฐฉ์์ ๋ํด ๋์๋ณด๊ฒ ๋์์ต๋๋ค..!
Webpack ๋ฒ์ ์ ์ฌ๋ฆฐ ํ์๋ ๋ค๋ฅธ ์์ ์ ๊ธ๊ธํด ์ค์ํ ๋ณํ๋ฅผ ๋ฏธ์ฒ ํ์ธํ์ง ์์๋ ๊ฒ์ด ์์ธ์ด์์ผ๋๊น์.
Allini ํ๋ก์ ํธ๋ ํ์๋ค์ ํ์ฌ ์ ๋ฌด๋ก ์ธํด ์ ์ ์ค๋จ๋์์์ง๋ง, ๋ค์ ์์ํ๊ฒ ๋์์ต๋๋ค!
ํ์ฌ๋ ๋์์ด๋๋์ด ์์ฒญํ ์์ ๋ UI๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฉํ๋ ๊ฒ์ด ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ํ๋จํ์ฌ, ์ด ๋ถ๋ถ๋ถํฐ ์์ ์ ์งํํ๊ณ ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ์ Webpack 5 ๋ฒ์ ์ ๋ง์ถ ์ ์ฒด์ ์ธ ์ค์ ์์ ์ ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ํ์ ์งํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ฐ์ ์ ํ๋ก์ ํธ์ ์์ฑ๋๋ฅผ ๋์ด๋ ๋ฐ ์ง์คํ๊ณ , ์์ ์ค ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ํ๋์ฉ ํด๊ฒฐํด ๋๊ฐ ๊ณํ์ ๋๋ค.
ํ๋ก์ ํธ๊ฐ ๋ง๋ฌด๋ฆฌ๋๋ฉด, CSS ํ์ผ์ ๊ฐ๋ณ์ ์ผ๋ก ์ถ์ถํ๊ธฐ ์ํ MiniCssExtractPlugin ๋ฑ์ ๋ฆฌํฉํ ๋ง๋ ์งํํ ์์ ์ ๋๋ค.
์ด ๊ณผ์ ์์ ์์ฑ๋ ์ต์ข ์ฝ๋๋ ๋์ค์ ๋ธ๋ก๊ทธ์ ๊ณต์ ํ ์์ ์ด๋, ๊ธฐ๋ํด ์ฃผ์ธ์! ๐ช
๐ ์ฐธ๊ณ ๋ฌธํ | ||
Webpack Asset Modules ๊ณต์๋ฌธ์ ์๋ฌธ | ||
Webpack Asset Modules ๊ณต์๋ฌธ์ ๋ฒ์ญ |