๐ฏ create-react-app(1) ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฌธ๋ฒ ์ง์
๋ฆฌ์กํธ๋ฅผ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ ํญ์ cra(creat react app)ํจํค์ง๋ฅผ ์ฌ์ฉํ์๋ค.
ํ์ง๋ง ๋ฌธ๋ ๋ฌด์ง์ฑ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋๊ฑด ์๋๊ฐ ๋ผ๋ ์๊ฐ์ด ๋ค์ด ์ค๋์ cra์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค.
์ดํด๋ณผ ๋ด์ฉ์ด ๋ง์ผ๋ ๋จ๊ณ๋ณ๋ก ์์๋ณด๊ณ ์ ํ๋ค.
์ค๋์ ์ผ๋จ CRA์์ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฌธ๋ฒ ์ง์์ ๊ดํด์ ์์๋ณด๊ฒ ๋ค.
CRA(create-react-app)
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์ ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํ๊ณ ์๋ค.
(์ถํ์ ๊ธฐ์กด ํ๋ก์ ํธ์ polyfill์ ์ ์ฉํ๋๋ฐ ์์ ์ ํด๋ด์ผ๊ฒ ๋ค.)
๋ฌธ๋ฒ ์ง์
cra ํ๋ก์ ํธ์์๋ ์ฌ๋ฌ๊ฐ์ง ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ๋ฌธ๋ฒ ๋ฑ์ ์ง์ํ๊ณ ์๋ค.
- ์ง์ ์ฐ์ฐ์(ES2016)
- Async/Await(ES2017)
- Rest/Spread ์ฐ์ฐ์(ES2018)
- Dynamic import
- ํด๋์ค ํ๋ ๋ฐ ์ ์ ํ๋กํผํฐ
- JSX,Flow,TypeScript
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๊ฐ ๋ฒ์ ์ ์ง์ํ๊ฒ ๋ค.
Conclusion
CRA๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ค์ ์ด ๋๋ถ๋ถ ๊ฐ๋ฅํ๊ฒ ๋์ด์์ง๋ง IE์ ๊ฒฝ์ฐ ์ง์์ด ์๋๋ฏ๋ก ํด๋น ๊ฒฝ์ฐ์ ๋๋นํ poly fill์ ๊ธฐ์กด ํ๋ก์ ํธ์ ์ ์ฉํ๋ ์ฐ์ต์ ํด๋ด์ผ๊ฒ ๋ค.
๋ํ ์ต์ ๋ฌธ๋ฒ์ ๋ํ ํด๋ฆฌํ์ด ์๋๋ฏ๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ๋ฌธ๋ฒ ์ง์์ ์ ๋ฌด์ ๋ฐ๋ผ ํด๋ฆฌํ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์๋๋๋ก ํด์ผ๊ฒ ๋ค.
๋ค์์ ์ด์ด์ CRA์ ๋ํ์ฌ ๋ ์์๋ณด๋๋ก ํ๊ฒ ๋ค
-์ด์-
Reference
-
-
-
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฏ create-react-app(1) ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฌธ๋ฒ ์ง์), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://velog.io/@kcj_dev96/create-react-app
์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์
๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฏ create-react-app(1) ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฌธ๋ฒ ์ง์), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kcj_dev96/create-react-app์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค