π Next.js νκ²½ λ³μ μ€μ κ°μ΄λ
π Next.js νκ²½ λ³μ μ€μ κ°μ΄λ
Next.jsμμλ νκ²½ λ³μλ₯Ό ν΅ν΄ λ€μν νκ²½μ λ§μΆ° μ€μ κ°μ κ΄λ¦¬ν μ μμ΅λλ€.
κ°λ°, ν
μ€νΈ, νλ‘λμ
νκ²½μ λ°λΌ κ°κΈ° λ€λ₯Έ λ³μ κ°μ μ§μ νμ¬ μ μ°ν μ ν리μΌμ΄μ
ꡬμ±μ΄ κ°λ₯ν©λλ€.
β 1. κΈ°λ³Έ νκ²½ λ³μ μ€μ
νκ²½ λ³μ νμΌ κ΅¬μ‘°
Next.jsμμλ λ€μκ³Ό κ°μ νμΌ μ΄λ¦μΌλ‘ νκ²½ λ³μλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€:
.env # κΈ°λ³Έ νκ²½ (κ°λ°)
.env.local # λ‘컬 νκ²½ (Gitμ μΆκ°νμ§ μμ)
.env.development # κ°λ° νκ²½
.env.production # νλ‘λμ
νκ²½
.env.test # ν
μ€νΈ νκ²½
νκ²½ λ³μ νμΌ μμ
.env
NEXT_PUBLIC_API_URL=https://api.example.com
SECRET_KEY=mysecretkey
νκ²½ λ³μ μ¬μ©
Next.jsμμλ process.env κ°μ²΄λ₯Ό ν΅ν΄ νκ²½ λ³μλ₯Ό λΆλ¬μ¬ μ μμ΅λλ€.
// app/page.tsx
export default function HomePage() {
return (
<div>
<h1>API URL: {process.env.NEXT_PUBLIC_API_URL}</h1>
</div>
);
}
β 2. νκ²½ λ³μλͺ κ·μΉ
Next.jsμμ ν΄λΌμ΄μΈνΈμμ μ κ·Ό κ°λ₯ν λ³μλ λ°λμ NEXT_PUBLIC_ μ λμ΄λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
μ λμ΄ μμ΄ μ μΈλ λ³μλ μλ² μΈ‘μμλ§ μ κ·Ό κ°λ₯ν©λλ€.
μ¬λ°λ₯Έ μ
NEXT_PUBLIC_ANALYTICS_ID=123456
μλͺ»λ μ
API_SECRET_KEY=mysecretkey # ν΄λΌμ΄μΈνΈμμ μ κ·Ό λΆκ°
β 3. νκ²½ λ³μ λ‘λ© μμ
- .env.local
- .env.development, .env.production, .env.test
- .env
μ£Όμ:
.env.localμ νμ κ°μ₯ μ°μ μ λλ©°, λ²μ κ΄λ¦¬μμ μ μΈν΄μΌ ν©λλ€.
.env.production νμΌμ νλ‘λμ λΉλ μμλ§ μ¬μ©λ©λλ€.
β 4. μλ²μμ μ¬μ©νκΈ°
μλ² μ μ© νκ²½ λ³μλ NEXT_PUBLIC_ μ λμ΄ μμ΄ μ€μ ν μ μμ΅λλ€.
DATABASE_URL=postgres://user:pass@localhost:5432/mydb
μ¬μ© μμ
// app/api/data/route.ts
import { NextResponse } from 'next/server';
export async function GET() {
const dbUrl = process.env.DATABASE_URL;
return NextResponse.json({ url: dbUrl });
}
β 5. ν΄λΌμ΄μΈνΈμμ μ¬μ©νκΈ°
ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈμμλ NEXT_PUBLIC_ μ λμ΄λ₯Ό λ°λμ μ¬μ©ν΄μΌ ν©λλ€.
// app/page.tsx
export default function HomePage() {
return (
<div>
<h2>API Endpoint: {process.env.NEXT_PUBLIC_API_URL}</h2>
</div>
);
}
β 6. νκ²½ λ³μ μ€μ λ°©λ²
κ°λ° νκ²½
npm run dev
νλ‘λμ νκ²½
npm run build
npm start
λΉλ μ νκ²½ λ³μ μ€μ
λΉλ μ νκ²½ λ³μλ₯Ό λͺ μμ μΌλ‘ μ§μ ν μ μμ΅λλ€.
NEXT_PUBLIC_API_URL=https://api.prod.com npm run build
λ°νμ μ νκ²½ λ³μ μ€μ
NEXT_PUBLIC_API_URL=https://api.prod.com npm start
β 7. Vercel νκ²½ λ³μ μ€μ
Vercelμ λ°°ν¬ν λλ Vercel λμ보λμμ νκ²½ λ³μλ₯Ό μ€μ ν μ μμ΅λλ€.
- νλ‘μ νΈ μ ν
- Settings → Environment Variables
- ν€μ κ°μ μ λ ₯νκ³ μ μ₯
λ°°ν¬ ν νκ²½ λ³μλ₯Ό λ³κ²½ν κ²½μ° μ¬λ°°ν¬κ° νμν©λλ€.
β 8. λ¬Έμ ν΄κ²°
νκ²½ λ³μκ° μ λ³΄μΌ λ
- νκ²½ λ³μ μ΄λ¦ μμ NEXT_PUBLIC_κ° μλ κ²½μ°
- λΉλ ν κ°μ΄ λ°μλμ§ μμ κ²½μ°
- .env.local νμΌμ΄ μλ κ²½μ°
νμΈ λ°©λ²
npm run build && npm start
λΈλΌμ°μ μμ λ€μμ νμΈν©λλ€:
API URL: https://api.prod.com
β 9. 보μ κ³ λ € μ¬ν
- ν΄λΌμ΄μΈνΈ λ ΈμΆ λ°©μ§: λ―Όκ°ν μ 보λ NEXT_PUBLIC_ μμ΄ μ€μ νμ¬ μλ² μ μ©μΌλ‘ μ¬μ©
- νκ²½ λ³μ κ΄λ¦¬: λ‘컬 κ°λ°κ³Ό νλ‘λμ νκ²½μ ꡬλΆνμ¬ κ΄λ¦¬
- λΉλ°ν€ κ΄λ¦¬: .env.localμ Gitμ 컀λ°λμ§ μλλ‘ .gitignoreμ μΆκ°
.gitignore
.env.local
β μμ½
νλͺ© μ€λͺ
νκ²½ λ³μ νμΌ κ΅¬μ‘° | .env, .env.local, .env.development λ± κ΄λ¦¬ |
ν΄λΌμ΄μΈνΈ μ κ·Ό | NEXT_PUBLIC_ μ λμ΄ νμ |
μλ² μ μ© λ³μ | μ λμ΄ μμ΄ μ¬μ© κ°λ₯ |
Vercel λ°°ν¬ μ€μ | Vercel λμ보λμμ νκ²½ λ³μ μ€μ κ°λ₯ |
보μ κ³ λ € μ¬ν | λ―Όκ° μ 보λ NEXT_PUBLIC_ μ λμ΄ μ¬μ© κΈμ§ |
Next.js, νκ²½ λ³μ, νκ²½ μ€μ , νκ²½ λ³μ κ΄λ¦¬, ν΄λΌμ΄μΈνΈ νκ²½ λ³μ, μλ² νκ²½ λ³μ, Vercel νκ²½ λ³μ, νκ²½ λ³μ 보μ, μ€μ νμΌ κ΄λ¦¬, νκ²½ λ³μ λλ²κΉ