๐ ์นํฉ์ ์ด๋ ต๋ค๊ณ ๋ง์ด ๋ค์๋๋ฐ ์ด๋ค ๋ถ๋ถ์์ ์ด๋ ค์์ด ์๋์ง ์์ธํ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
๐ ์ค๋ ํ์ตํ ๋ด์ฉ
๋ฒ๋ค๋ง
- ์ฌ์ ์ ์๋ฏธ: ์ฌ๋ฌ ์ ํ์ด๋, ์ฝ๋, ํ๋ก๊ทธ๋จ์ ๋ฌถ์ด์ ํจํค์ง๋ก ์ ๊ณตํ๋ ํ์
- ๊ฐ๋ฐ์ ์๋ฏธ: ์ฌ์ฉ์์๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๊ธฐ ์ํ ํ์ผ ๋ฌถ์
๋ฒ๋ค๋ง์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ์ผ์ด๋๋ ์ํฉ
- ๋ ๊ฐ์ jsํ์ผ์์ ๊ฐ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์ ๋ณ์ ๊ฐ ์ถฉ๋์ด ์ผ์ด๋ ์ํฉ
- ๋ฑ ํ ๋ฒ ๋ถ๋ฌ์ค๋ ํ๋ ์์ํฌ ์ฝ๋๊ฐ 8MB๋ผ์, ์ธํฐ๋ท ์๋๊ฐ ๋๋ฆฐ ๊ตญ๊ฐ์ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์ ์ฌ์ฉ์๊ฐ ๋ถํธ์ ํธ์ํ ์ํฉ
- ๋ฒ๋ค ํ์ผ ์ฌ์ด์ฆ๋ฅผ ์ค์ด๊ธฐ ์ํด์ ํ์ผ์ ๊ณต๋ฐฑ์ ๋ชจ๋ ์ง์ ๋๋ฐ, ๊ฐ๋ ์ฑ์ด ๋๋ฌด ๋จ์ด์ ธ์ ์ฝ๋ฉํ๊ธฐ ์ด๋ ค์ด ์ํฉ
- ๋ฐฐํฌ ์ฝ๋๊ฐ ๋๋ฌด ์ฝ๊ธฐ ์ฌ์ ๊ฐ๋ฐ์ ํ ์ค ์๋ ์ฌ์ฉ์๊ฐ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์๋ก ์กฐ์ํ์ฌ ํผํด๊ฐ ๋ฐ์ํ ์ํฉ
์นํฉ (Webpack)
- ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ํ๋์ ํ์ผ๋ก ํฉ์ณ์ฃผ๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ
- *๋ชจ๋๋ฒ๋ค๋ฌ: HTML, CSS, JavaScript ๋ฑ์ ์์์ ์ ๋ถ ๊ฐ๊ฐ์ ๋ชจ๋๋ก ๋ณด๊ณ ์ด๋ฅผ ์กฐํฉํด ํ๋์ ๋ฌถ์์ผ๋ก ๋ฒ๋ค๋ง(๋น๋)ํ๋ ๋๊ตฌ
- ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ์ํด์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฒ๋ค๋ฌ
- ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๊ท๋ชจ ์ ์ ์๊ฒ ์ ๊ณตํ๊ธฐ ์ํด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ๋ฐฐํฌ๋ฅผ ์ํด ๋ง์ด ์ฌ์ฉํ๋ค.
Webpack์์์ ๋ชจ๋
- JavaScript์ ๋ชจ๋์๋ง ๊ตญํํ์ง ์๋๋ค. HTML, CSS, jpg, png ๊ฐ์ ์ด๋ฏธ์ง ํ์ผ๋ค๋ ์ ๋ถ ํฌํจํ ํฌ๊ด์ ์ธ ๊ฐ๋ ์ด๋ค.
๋น๋์ ๋ฒ๋ค๋ง
- ๋น๋: ๊ฐ๋ฐ์ด ์๋ฃ๋ ์ฑ์ ๋ฐฐํฌํ๊ธฐ ์ํด ํ๋์ ํด๋๋ก ๊ตฌ์ฑํ์ฌ ์ค๋นํ๋ ์์
- React์ฑ: npm run build๋ฅผ ์คํํ๋ฉด React buid ์์ ์ด ์งํ๋๊ณ , index.html ํ์ผ์ ์์ถ๋์ด ๋ฐฐํฌ์ ์ต์ ํ๋ ์ํ๋ฅผ ์ ๊ณต
- ๋ฒ๋ค๋ง: ๋ฌถ์์ ๊ฐ๋ (๊ทธ๋ฃนํ), ํ์ผ์ ๋ฌถ๋ ์์ ๊ทธ ์์ฒด๋ฅผ ๋งํ๋ฉฐ ํ์ผ์ ์์กด์ ๊ด๊ณ์ ์๋ ํ์ผ๋ค ๊ทธ ์์ฒด ํน์ ๋ด๋ถ์ ์ผ๋ก ํฌํจ๋์ด ์๋ ๋ชจ๋์ ์๋ฏธ
Webpack์ ํ์์ฑ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅธ ๋ก๋ฉ ์๋์ ๋์ ์ฑ๋ฅ์ ์ํด์์ด๋ค.
- ๊ฐ ์์๋ค์ ์ผ์ผํ ์๋ฒ์์ ์์ฒญํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ์ฝ์คํธ๊ฐ ํ๊ธฐ์ ์ผ๋ก ์ค์ด๋ ๋ค.
์นํฉ์ ํต์ฌ ๊ฐ๋
- Target
- target: ["ํ๋ก์ ํธ ํ๊ฒฝ", "ECMAScript ๋ฒ์ "]
- Entry
- ์นํฉ์ด ๋ด๋ถ์ ๋ํ๋์ ๊ทธ๋ํ๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉํด์ผ ํ๋ ๋ชจ๋
- ์ง๊ฐ์ ์ ์ผ๋ก ์์กดํ๋ ๋ค๋ฅธ ๋ชจ๋๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์๋ผ ์ ์๋ค.
- Output
- ์์ฑ๋ ๋ฒ๋ค์ ๋ด๋ณด๋ผ ์์น์ ์ด ํ์ผ์ ์ด๋ฆ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ webpack์ ์๋ ค์ฃผ๋ ์ญํ
- Loaders
- Webpack์ JavaScript์ JSON ํ์ผ๋ง ์ดํดํ์ง๋ง ๋ก๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์ ํ์ ํ์ผ์ ์ฒ๋ฆฌํ๊ฑฐ๋, ์ ํจํ ๋ชจ๋๋ก ๋ณํํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ํ๋์ ๊ทธ๋ํ์ ์ถ๊ฐํ ์ ์๋ค.
- test: ๋ณํ์ด ํ์ํ ํ์ผ๋ค์ ์๋ณํ๊ธฐ ์ํ ์์ฑ (ํ์)
- use: ๋ณํ์ ์ํํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ก๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์์ฑ (ํ์)
- exclude: ๋ฐ๋ฒจ๋ก ์ปดํ์ผํ์ง ์์ ํ์ผ์ด๋ ํด๋๋ฅผ ์ง์
- Plugins
- ๋ฒ๋ค์ ์ต์ ํํ๊ฑฐ๋ ์์ ์ ๊ด๋ฆฌํ๊ณ , ํ๊ฒฝ๋ณ์ ์ฃผ์ ๋ฑ์ ๊ด๋ฒ์ํ ์์ ์ ์ํํ ์ ์๊ฒ ๋๋ค.
- Optimization(์ต์ ํ)
- Webpack ๋ฒ์ 4๋ถํฐ ์คํ
- minimize: TerserPlugin, optimization.minimize์ ๋ช ์๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ฒ๋คํ์ผ์ ์ต์ํ(์์ถ)์ํค๋ ์์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
- minimizer: default minimizer์ ์ปค์คํ ๋ TerserPlugin ์ธ์คํด์ค๋ฅผ ์ ๊ณตํด์ ์ฌ์ ์ ํ ์ ์๋ค.
- Mode
- webpack์ ๋ด์ฅ๋ ์ต์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
- development: ๋ชจ๋๊ณผ ์ฒญํฌ์ ์ ์ฉํ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์๋ค.
- production: ๋ชจ๋๊ณผ ์ฒญํฌ, FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, TerserPlugin ๋ฑ์ ๋ํด ๊ฒฐ์ ์ ๋ง๊ธ์ด๋ฆ(mangled name)์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- none: ๊ธฐ๋ณธ ์ต์ ํ ์ต์ ์์ ์ ์ธํ๋ค.
- Browser Compatibility
๐ ์ถ๊ฐ๋ก ๊ณต๋ถํ ๋ด์ฉ
[udemy] React ์๋ฒฝ ๊ฐ์ด๋ ๊ฐ์ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธ์ฉ ์ด๋ผ๋ ๊พธ์คํ ๋ฃ๊ธฐ)
Study์๊ณผ ํจ๊ป ์งํ์ค์ธ ํ๋ก์ ํธ ๊ตฌํ
- ํ์๊ฐ์ ํผ ๊ตฌํ
๐ ์ค์ํ ๋ด์ฉ
- ์นํฉ์ด๋?
- ์นํฉ์ ์ฌ์ฉํ๋ ์ด์
- ์นํฉ ์ฌ์ฉ๋ฒ
- ๋ฒ๋ค๋ง
- ์นํฉ์ ๊ฐ๋
๐ ์ฐธ๊ณ ์๋ฃ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
22.07.27_TIL (0) | 2022.07.27 |
---|---|
22.07.26_TIL (0) | 2022.07.26 |
22.07.22_TIL (0) | 2022.07.22 |
22.07.21_TIL (0) | 2022.07.21 |
22.07.19_TIL (0) | 2022.07.19 |