.env
ํ์ผ์ ํ๋ก์ ํธ์ ์ต์์ ๋ฃจํธ์ ์์นํ๋ค.dotenv
๋ฅผ ์ฌ์ฉํด ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์์นํ .env
ํ์ผ๋ก๋ถํฐ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฝ์ด๋.npm install dotenv
.env
: ๊ธฐ๋ณธ ์ค์ ํ์ผ
.env.local
: .env ํ์ผ์ ์ค๋ฒ๋ผ์ด๋(override)ํจ.
ํ
์คํธ ํ๊ฒฝ์ ์ ์ธํ๊ณ ๋ชจ๋ ํ๊ฒฝ์์ ์ฌ์ฉ.
.env.development, .env.test, .env.production
: ๊ฐ ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ์ฌ์ฉ.
.env.development.local, .env.test.local, .env.production.local
: ๊ฐ ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ์ฌ์ฉ๋๋ .env.{environment}
ํ์ผ์ ์ค๋ฒ๋ผ์ด๋ํ๋ค.
gitignore์ ๋ค ์ ์ฉํ์.
npm start
npm run build
npm test
.env
ํ์ผ์ ํ๋ก์ ํธ์ ์ต์์ ๋ฃจํธ์ ์์นํ๋๋ก ํ๋ค.gitignore
ํ์ผ์ .env
์ถ๊ฐ .env
ํ์ผ ์์ ๋ฐ๋์ "REACT_APP_```์ํ๋์ด๋ฆ"
์ผ๋ก ์ด๋ฆ์ ์ง์ด์ฃผ๊ณ KEY๋ฅผ ์์ฑํ๋ค.REACT_APP_
์ผ๋ก ์์ํด์ผ react์์ ์ธ์ํจ.'%REACT_APP_์ด๋ฆ%'
์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๊ณ , .js๋ .jsx์์๋ process.env.REACT_APP_์ด๋ฆ
์ผ๋ก ์ฌ์ฉ// ๐ react ์ผ ๋
// .env
REACT_APP_GOOGLE_API_KEY=Aa1Bb2Cc3Dd4Ee5Ff6Gg7Hh8Ii9Jj0
NEXT_PUBLIC_GRAPHQL_PORTFOLIO_API_URL=https://pye-portfolio-api.co.kr/board/graphql
// component
import * as Apollo from '@apollo/client';
import { HttpLink } from '@apollo/client' ;
// HttpLink : POST, GET ์์ฒญ์ ๋ชจ๋ ์ง์.
// ์์
๋ณ๋ก HTTP ์ต์
์ ๊ตฌ์ฑํ ์ ์๋ค.
const Link = new Apollo.HttpLink ( {
uri : process.env.NEXT_PUBLIC_GRAPHQL_PORTFOLIO_API_URL
// + ์ถ๊ฐ ์ต์
} ) ;
const GoogleApiKey = new Apollo.HttpLink({
uri : process.env.REACT_APP_GOOGLE_API_KEY
})
const {data} = await axios.get(`${process.env.NEXT_PUBLIC_GRAPHQL_PORTFOLIO_API_URL}/todos`)
// ๐ node.js์ผ ๋
//.env
GOOGLE_API_KEY=Aa1Bb2Cc3Dd4Ee5Ff6Gg7Hh8Ii9Jj0
PORTFOLIO_API_URL=//pye-portfolio-api.co.kr/board/graphql
//callback.js
require('dotenv').config();
// ์๋จ์ dotenv๋ฅผ ๋ถ๋ฌ์ config๋ฅผ ์คํํด์ผ ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
const GOOGLE_API_KEY = process.env.GOOGLE_API_KEY;
const PORTFOLIO_API_URL = process.env.PORTFOLIO_API_URL;
// ์ดํ์๋ process.env๋ก ๊บผ๋ด์ธ ์ ์๋ค.```
์ฐธ๊ณ : HttpLink + ์ต์
๋ค : Apollo-Client Docs
์ฐธ๊ณ : env๋ฅผ ์ด์ฉํ ๋ณ์์ ์ธ ๋ฐ ์ฌ์ฉ๋ฒ
์ฐธ๊ณ : ์คํ ํ๊ฒฝ์ ๋ฐ๋ฅธ env ๋ถ๋ฆฌ ๋ฑ
์ฐธ๊ณ
์ฐธ๊ณ : .envํ์ผ ๋ง๋ค๊ธฐ
์ฐธ๊ณ : .env ํ์ผ ๊ด๋ฆฌ๋ถํฐ dotenv & DB๋ NodeJS ์ฐ๊ฒฐํ๊ธฐ
์ฐธ๊ณ : envํ์ผ์ ๋ํ์ฌ