๋ฆฌ์กํธ๋ฅผ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ ํญ์ cra(creat react app)ํจํค์ง๋ฅผ ์ฌ์ฉํ์๋ค.
ํ์ง๋ง ๋ฌธ๋ ๋ฌด์ง์ฑ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋๊ฑด ์๋๊ฐ ๋ผ๋ ์๊ฐ์ด ๋ค์ด ์ค๋์ cra์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค.
์ดํด๋ณผ ๋ด์ฉ์ด ๋ง์ผ๋ ๋จ๊ณ๋ณ๋ก ์์๋ณด๊ณ ์ ํ๋ค.
์ค๋์ ์ผ๋จ CRA์์ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฌธ๋ฒ ์ง์์ ๊ดํด์ ์์๋ณด๊ฒ ๋ค.
react project๋ฅผ ๊ตฌ์ฑํ ๋์ ์นํฉ ๋ฐ ๋ฐ๋ฒจ ์ค์ ๋ฑ ๊ธฐ๋ณธ์ ์ธ ์ค์ ๋ค์ ๊ฐ์ถ์ฑ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ ์ ์๋๋ก ํ๋ ํจํค์ง์ด๋ค.
์ค์น๋ฐฉ๋ฒ
npx create-react-app [project name]
npm create react-app [project name]
yarn create react-app [project name]
CRA ํ๋ก์ ํธ๋ ์ง์ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ค์ ๋ฐ ๋ฌธ๋ฒ์ ์ง์ ํน์ง์ด ์ด๋ค์ง ์ดํด๋ณด์.
์ง์ ๋ธ๋ผ์ฐ์
๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ์์ ์ง์(ํธํ)์ด ๋์ง๋ง Internet Explorer 9,10,11์์๋ ์ง์์ด ์๋๋ฏ๋ก react-app-polyfill์ ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํ๊ณ ์๋ค.
(2022.06.15์ดํ IE 11๋ ์๋น์ค๋ฅผ ์ข
๋ฃํ๊ฒ ๋๋ฏ๋ก ๊ตณ์ด ํด์ผํ๋ ์ถ๊ธด ํ์ง๋ง ๊ทธ๋๋ ์ฐ์ต์ผ์ ํ๋ฒ ํด๋ด์ผ๊ฒ ๋ค.)
(์ถํ์ ๊ธฐ์กด ํ๋ก์ ํธ์ polyfill์ ์ ์ฉํ๋๋ฐ ์์
์ ํด๋ด์ผ๊ฒ ๋ค.)
๋ฌธ๋ฒ ์ง์
cra ํ๋ก์ ํธ์์๋ ์ฌ๋ฌ๊ฐ์ง ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ๋ฌธ๋ฒ ๋ฑ์ ์ง์ํ๊ณ ์๋ค.
CRA ํ๋ก์ ํธ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก polyfill(ํ์๋ฌธ๋ฒ์ผ๋ก ๋ณํ)์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํ์ํ๋ค๋ฉด(๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ๋ฌธ๋ฒ์ ์ง์ํ๋์ง ์ฌ๋ถ) ์ ์ ํ polyfill์ ํด์ค์ผํ๋ค.
์ง์ํ๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ค์ ์ package.json์ browserslist์ ๋ช ์๋์ด์๋ค.
browserslist๋ ์ง์๋๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ช ์ํจ์ผ๋ก์จ ์ง์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ค์ ํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ์ด๋ค.
์ด๋ฅผ ์ค์ ํด์ฃผ๋ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ๋ฌธ๋ฒ์ด ์ง์๋์ง ์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ทธ๋ฃนํํด ํ๊ฒํ ํ์ฌ ๊ด๋ จ ๋ธ๋ผ์ฐ์ ์ ๋ํด์ ๋ฒ๋ค๋ง์ ํ ์ ์๋๋ก ํด์ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
(๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ฅธ ๋ฒ๋ค๋ง์ ์น์ ์ฑ๋ฅ ๋ฐ ์ต์ ํ์ ๋์์ด ๋๋ค.)
CRA package.json
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
ํด๋น ์ค์ ์ ๋ฐ๋ผ ์ง์๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์ ์ด ๋์ด์๋ค.
production์ buildํ์์ ๋ ์ง์๋๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ค์ ์ด๊ณ
development๋ ๊ฐ๋ฐํ ๋์ ์ง์๋๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ค์ ์ด๋ค.
ํด๋น ์ค์ ์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด node_modules/.cache
๋ฅผ ์ ๊ฑฐํ๋ค์ ๋ฐ๊ฟ์ผํ๋ค.
(babel-loader์์ ๋ณํ๋ฅผ ์ธ์ํ์ง ๋ชปํ๋๋ก ์ค์ ์ด ๋์๊ธฐ ๋๋ฌธ)
์ ์ค์ ์ ๋ํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ๋ค.
">0.2%" | ์ ์ธ๊ณ ์ ์ ์จ 0.2%์ด์์ธ ๋ธ๋ผ์ฐ์ ์ ๋ํ์ฌ ์ง์์ ํ๊ฒ ๋ค.
"not dead" | ์ง์์ด ์ค๋จ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ํ์ง ์๊ฒ ๋ค.
"not op_mini all" | opera-mini๋ ์ง์ํ์ง ์๊ฒ ๋ค.
"last 1 chrome version" | ์ต์ ํฌ๋ก ๋ธ๋ผ์ฐ์ 1๊ฐ ๋ฒ์ ์ ์ง์ํ๊ฒ ๋ค.
"last 1 firefox version" | ์ต์ฐ ํ์ด์ดํญ์ค ๋ธ๋ผ์ฐ์ 1๊ฐ ๋ฒ์ ์ ์ง์ํ๊ฒ ๋ค.
"last 1 safari version" | ์ต์ ์ฌํ๋ฆฌ ๋ธ๋ผ์ฐ์ 1๊ฐ ๋ฒ์ ์ ์ง์ํ๊ฒ ๋ค.
CRA๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ค์ ์ด ๋๋ถ๋ถ ๊ฐ๋ฅํ๊ฒ ๋์ด์์ง๋ง IE์ ๊ฒฝ์ฐ ์ง์์ด ์๋๋ฏ๋ก ํด๋น ๊ฒฝ์ฐ์ ๋๋นํ poly fill์ ๊ธฐ์กด ํ๋ก์ ํธ์ ์ ์ฉํ๋ ์ฐ์ต์ ํด๋ด์ผ๊ฒ ๋ค.
๋ํ ์ต์ ๋ฌธ๋ฒ์ ๋ํ ํด๋ฆฌํ์ด ์๋๋ฏ๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ๋ฌธ๋ฒ ์ง์์ ์ ๋ฌด์ ๋ฐ๋ผ ํด๋ฆฌํ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์๋๋๋ก ํด์ผ๊ฒ ๋ค.
๋ค์์ ์ด์ด์ CRA์ ๋ํ์ฌ ๋ ์์๋ณด๋๋ก ํ๊ฒ ๋ค
-์ด์-