๐ ๊ตฌํํ ๋ด์ฉ
- ์นํฉ์ ํ์ฉํ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์
- ES Lint, Pritter ์ค์
- HTML, CSS๋ก ํค๋ณด๋ ๋ ์ด์์ ์ ์
- ๋คํฌ๋ชจ๋
- ํฐํธ ๋ณ๊ฒฝ
- ๋ฌผ๋ฆฌ์ ์ผ๋ก ํค๋ณด๋ ์
๋ ฅ์ ๊ฐ์ํค๋ณด๋์๋ ๋์ผํ๊ฒ ๋ํ๋๋ ์ด๋ฒคํธ ์ ์ฉ
- ํน์ํค ์ ์ธ
- ํ๊ธ ์ ๋ ฅ์ ์๋ฌ ๋ฉ์์ง ์ถ๋ ฅ
- ๋ง์ฐ์ค๋ก ๊ฐ์ํค๋ณด๋ ํด๋ฆญ์ ์ค์ ๋ก ๊ธ์๊ฐ ์
๋ ฅ๋๋ ์ด๋ฒคํธ ์ ์ฉ
- ํน์ํค ์ ์ธ
๐งฑ์ฌ์ฉ ํด
- webpack
๐ ๊ฐ๋ฐํ๊ฒฝ ์ค์
1. package.json ์์ฑ
npm init -y
2. ์นํฉ ํจํค์ง ์ค์น
npm i -D webpack webpack-cli webpack-dev-server
npm i -D ํจํค์ง์ด๋ฆ => devDependencies์ ํจํค์ง๋ฅผ ์ค์นํ๊ฒ ๋ค.
devDependencies๋ ๋ก์ปฌ ๊ฐ๋ฐ์ด๋ ํ ์คํธ์ ํ์ํ ํจํค์ง๋ฅผ ๋งํจ.
๋ง์ฝ -D๋ฅผ ๋นผ๋ฉด dependencies(ํ๋ก๋์ ํ๊ฒฝ์์ ํ์ํ ํจํค์ง๋ค)์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
๐ค ํจํค์ง ๋ฒ์ ์ ๋ฐ๊พธ๊ณ ์ถ์๋ฐ...
package.json ์์ ๋ฒ์ ์ ์์ ํ๊ณ npm i(nstall) ํ๋ฉด ์ ์ฉ๋จ
3. css, js ํด๋ ์์ฑ ํ ๊ฐ๊ฐ style.css, index.js ํ์ผ ์์ฑ
๊ทธ๋ฆฌ๊ณ ์ต์์ ํด๋์ ์นํฉ ํ์ผ ์์ฑ => webpack.config.js
4. webpack.config.js ํ์ผ ์์ฑ
npm i -D terser-webpack-plugin ๋ช ๋ น์ด๋ฅผ ํตํด ์์ถ์ฉ ์ถ๊ฐ ํ๋ฌ๊ทธ์ธ ์ค์น
5. ์นํฉ ๋ฒ๋ค๋ฌ ์๋
npx webpack
=> /dist ์์ฑ ๋ฐ bundle.js ์์ฑ๋จ
ํ์ผ ์์ฑํ๊ณ webpack ๋น๋(npx webpack) ํ๋ฉด bundle.js , bundle.map.js ํ์ผ์ด ์์ฑ๋๋ค
๋ฒ๋ค.map.js๋ devtool : source-map ๋ํ๋ด๋ ํ์ผ์
๐ค output์ path๋ฅผ ์ ๋๊ฒฝ๋ก๋ก ์ง์ ํ์ง ์์ผ๋ฉด? => ์๋์ ๊ฐ์ ์๋ฌ ๋ฐ์
6. HTML / CSS ๊ด๋ จ ํ๋ฌ๊ทธ์ธ ์ค์น ํ webpack.config.js ํ์ผ์ ํ์ํ ์ต์ ์ค์
// ๊ด๋ จ ์นํฉ ํ๋ฌ๊ทธ์ธ ์ค์น. html ํ์ผ์ ์ค์ ํด์ค ๋ชจ๋.
npm i -D html-webpack-plugin html
// css ๊ด๋ จ ํจํค์ง
npm i -D mini-css-extract-plugin css-loader css-minimizer-webpack-plugin
HTML ๋ชจ๋์ธ html-webpack-plugin์ ํ ํ๋ฆฟ(index.html) ์์์ lodash ๋ฌธ๋ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํด์ค.
*lodash : ์ ํธ์ฑ ๋ฉ์๋๋ ํ ํ๋ฆฟ๊ด๋ จ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
7. package.json์์ ์คํฌ๋ฆฝํธ ์ค์ ์ค์
webpack --mode=production : ๊ณต๋ฐฑ ์ค๋ฐ๊ฟ์์ ๊ณ ์์ถํด์ฃผ๊ณ ๋น๋ํด์ค.
๋๋ถ๋ถ ๋น๋์์๋ ์ด๋ ๊ฒ ํจ. ์ต์ ์ด ์์ผ๋ฉด development ๋ชจ๋๋ก ํ๊ฒ ๋จ
webpack dev server๋ก ๊ฐ๋ฐ์๋ฒ ์๋ํ๊ฒ script ์์ฑ => npm run dev๋ก ๊ฐ๋ฐ์๋ฒ๋ฅผ ์คํ๊ฐ๋ฅํ๊ฒ ๋จ.
8. webpack.config.js ๊ฐ๋ฐ์๋ฒ ๊ด๋ จ ์ค์
๐ ์ง๊ธ๊น์ง ์์ฑํ ์นํฉ ํ์ผ ์ ์ฒด
9. ES Lint, Prettier ์ค์
ES Lint : ์ฝ๋๋ฅผ ์คํํ์ง ์์๋ ์ ์ ๋ถ์์ ํตํด ๋ฌธ๋ฒ์ ์๋ฌ ์ฐพ์์ค. ๊ฐ๋จํ ํฌ๋งทํ ๊ธฐ๋ฅ ์์.
Prettier : ์ฝ๋ ํฌ๋งคํฐ์ค ํ๋.
ES Lint install
npm i -D eslint
Prettier install
npm install --save-dev --save-exact prettier
--save-dev : -D๋ ๊ฐ์. ์ถ์ฝํ
--save-exact : ^(์บ๋ฟ)์ด ์์ด ์ค์น๋จ. (์บ๋ฟ์ ์๋ฏธ - ๋ง์ด๋ ๋ฒ์ ์ ํํด์ ์ ๋ฐ์ดํธ๋ฅผ ํ์ฉํจ. )
๋ฒ์ ์ ๋ฐ๋ผ ํ๋ฆฌํฐ์ด ์ค์ ์ด ๋ฌ๋ผ์ง์์๊ธฐ ๋๋ฌธ์ ์ต์ ์ฌ์ฉ์ ๊ถ์ฅํจ .
10. ๊ด๋ จ ํ๋ฌ๊ทธ์ธ ์ค์น
npm i -D eslint-config-prettier eslint-plugin-prettier
eslint-config-prettier : ES Lint์ ํฌ๋งทํ ๊ธฐ๋ฅ์ด ํ๋ฆฌํฐ์ด์ ๊ฒน์น์ง ์๊ฒ ๋นํ์ฑํ ํด์ฃผ๋ ํ๋ฌ๊ทธ์ธ
eslint-plugin-prettier : ES Lint์ ํ๋ฆฌํฐ์ด์ ํฌ๋งทํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ํจํค์ง
11. ES Lint ์ด๊ธฐํ
npx eslint --init
์์ฑ๋ eslintrc.json ํ์ผ ์์ => ํ๋ฆฌํฐ์ด ํ๋ฌ๊ทธ์ธ ์ถ๊ฐ (ํ๋ฆฌํฐ์ด์์ ์ถ์ฒํ๋ ์คํ์ผ๋ก ์ฌ์ฉํ ๊ฒ์)
12. .eslintignore ํ์ผ ์์ฑํด์ eslint๋ฅผ ์ ์ฉํ์ง ์์ ํ์ผ๋ค ์์ฑ
13. prettier ์ค์ ํด์ฃผ๋ ํ์ผ ์์ฑ => .prettierrc.json
prettier ํฌ๋งคํ ๋ฃฐ ์ค์ ํด์ฃผ๊ธฐ. prettier ํํ์ด์ง์ Playground์์ ์ค์ ํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
prettier๊ฐ ์ ์ฉ๋์ง ์์ ํ์ผ๋ค์ ์ ์ด์ค .prettierignore ํ์ผ ์์ฑํ ๋ด๋ถ ํ์ผ์ .eslintignore๊ณผ ๋์ผํ๊ฒ ์ค์ ํ๋ค.
14. vs code extension์ค eslint, pritter ์ค์น ํ
cmd+shift+p ๋ก open workspace settings(json) ์ด์ด์ ์๋ ๋ด์ฉ ์ถ๊ฐ
์ ์ฅํ ๋ eslint ์ pritter๋ก ์ค์ ํด์ฃผ๊ฒ ๋ค.
1. ์ ์ฅํ ๋ ํฌ๋งทํ๋ค. html, css, js๋ก ๋ชจ๋ ํฌ๋งทํ ํ๊ฒ ๋ค
2. ์ธ์ด๋ธ ๋ ๋ eslint ๋ฃฐ๋๋ก ์ค์ ์ ํ๋ค.
****************************
์๊ฐ ์๋ฃ!
*****************************
#ํจ์คํธ์บ ํผ์ค #ํจ์บ ์ฑ๋ฆฐ์ง #์๊ฐ๋ฃ0์์ฑ๋ฆฐ์ง #ํ๊ธ์ฑ๋ฆฐ์ง #์ง์ฅ์ธ์ธ๊ฐ #์ง์ฅ์ธ์๊ธฐ๊ณ๋ฐ
#ํจ์บ ์ธ๊ฐํ๊ธฐ #ํจ์คํธ์บ ํผ์คํ๊ธฐ #์ค๊ณต์ #30๊ฐํ๋ก์ ํธ๋ก๋ฐฐ์ฐ๋ํ๋ก ํธ์๋withReact