React ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด, ๋ฐฐํฌ ํ๊ฒฝ?์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ํ ํด์ผํ๋ case๊ฐ ๋ฐ์ํ๋ค.
์๋ฅผ ๋ค๋ฉด, ๋ณดํต API ์ฃผ์๋ฅผ ํ๊ฒฝ ๋ณ์๋ก ๋ง์ด ์ ํ ํด๋๊ณ ๋ ํ๋๋ฐ..
์ด์ API ์ฃผ์์ ๊ฐ๋ฐ API ์ฃผ์๋ฅผ ๋ฐฐํฌ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ํ ํด๋๊ณ ์ถ์ case๊ฐ ๋ฑ ์ด์ ํด๋นํ๋ค.
์ฐ์ ๊ธฐ์ด ์ ํ ๋ฐฉ๋ฒ์ ์ฒจ๋ถํด๋ณธ๋ค. (.env ํ์ผ์ ํ๋๋ง ์ฐ๋ ์ผ์ด์ค)
์ผ์ด์ค์ ๋ฐ๋ฅธ .env ์ค์ ๋ฐฉ๋ฒ
โป ์ฐธ๊ณ . ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ ์ CRA(Create-React-App) ์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐ ์์ฑํจ.
ํด๋น ๋ฐฉ๋ฒ์ด ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ก์ ํธ ์ด๊ธฐ ์์ฑ ์์๋ ์๋ง dotenv ๋ผ๋ ๊ฒ์ ์ค์นํ๊ณ ๋ค๋ฅธ ๊ณผ์ ์ด ์ถ๊ฐ๋ก ์์ฒญ๋ ๋ฏ ํ๋ค.
.env ํ์ผ ์์ฑ
ํ๊ฒฝ ๋ณ์๋ฅผ ์ ํ ํ๊ธฐ ์ํด์ ํ๋ก์ ํธ ์ต์์(root) ๊ฒฝ๋ก์ ํ์ผ ์์ฑํ๋ค.
์ ์ธํ ์ ์๋ .env ํ์ผ์ ์ข ๋ฅ์๋
โด.env โต.env.development โถ.env.local โท.env.production โธ.env.test ...
๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ๋ด๊ฐ ์ํ๋ ์ฉ๋์ ๋ฐ๋ผ ํ์ํ ํ์ผ์ ์์ฑํ์ฌ ์ ํ ํด์ค๋ค.
์์ฑํ ํ์ผ์์ ์ฐ์ ์์๋ ๋น๋ ์ข ๋ฅ ๋ณ๋ก ์ ์ฉ์ด ๋๋ค.
์ฐ์ ์์๋ ์๋์ ๊ฐ๋ค. (์ผ์ชฝ์ด ์ฐ์ ์์๊ฐ ๋ ๋์)
start : .env.development.local > .env.development > .env.local > .env
build : .env.production.local > .env.production > .env.local > .env
test : .env.test,local > .env.test > .env.local > .env
.env ํ์ผ ๋ณ์ ์ค์
## .env.development
REACT_APP_URL = localhost
REACT_APP_KEY = localkey
## .env.production
REACT_APP_URL = serverapi
REACT_APP_KEY = servercommonkey
.env ๋ณ์ ์ฌ์ฉ๋ฒ
์์์ ์ค๋ช ํ ์ฐ์ ์์์ ์๋ ๋ณ์๋ฅผ ๋ถ๋ฌ์จ๋ค.
์ฌ์ฉ๋ฒ์ ๊ธฐ๋ณธ ๋ณ์ ์ฌ์ฉ๋ฒ๊ณผ ๋์ผ.
// in .js
const temp = process.env.REACT_APP_
// in .html
%process.env.REACT_APP_%
package.json ์ค์ ํ์ธ
๋๋ถ๋ถ์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์์ ๊ฐ๋ ๋ง์ผ๋ก๋ ํ๋ก์ ํธ ์คํ์ด ๊ฐ๋ฅํ ๊ฒ์ธ๋ฐ...
๋ง์ฝ ์ด ์ค์ ์ด ์ ์๋จนํ๋ ๊ฒฝ์ฐ์๋ package.json ์ค์ ์ ํ์ธํด๋ณด๋๋ก ํ์.
// package.json
"scripts": {
"start": "react-scripts start",
"build": "env-cmd -f .env.production react-scripts build",
},
๋ชจ๋ ์ค์ ์ด ์๋ฃ ๋๋ฉด
npm start ๋ฅผ ํ๋ฉด .env.development ํ์ผ์ดใ ก, npm build ๋ฅผ ํ๋ฉด .env.production ํ์ผ์ด ์ ์ฉ๋์ด ์คํ ๋ ๊ฒ์ด๋ค.