Environment Variables
ุฅู Create-T3-App
ุชุณุชุฎุฏู
Zodโ ููุชุฃูุฏ ู
ู ุตูุงุญูุฉ ุงูู environment variables ุฃุซูุงุก ุงูู runtime ุนู ุทุฑูู ุชูููุฑ ุจุนุถ ุงูู
ููุงุช ุงูุงุถุงูุฉ
๐ src/env
โซ ๐ client.mjs
โซ ๐ schema.mjs
โซ ๐ server.mjs
ูุฏ ูุจุฏู ู ุญุชูู ูุฐู ุงูู ููุงุช ู ุฎูููุง ูููููุฉ ุงูุฃููู ุ ููู ูุง ุชููู ุ ููู ููุณ ู ุนูุฏูุง ูู ุง ูุจุฏู. ุฏุนูุง ูููู ูุธุฑุฉ ุนูููุง ูุงุญุฏุฉ ุชูู ุงูุฃุฎุฑู ุ ููุณูุฑ ุฎูุงู ุนู ููุฉ ุฅุถุงูุฉ environment variables ุฅุถุงููุฉ.
ุฅุฐุง ููุช ุชุฑูุฏ ุฅุถุงูุฉ environment variable ุฌุฏูุฏ ุ ููุฌุจ ุนููู ุฅุถุงูุชู ุฅูู ูู ู
ู โ.envโ ููุฐูู ูู env / schema.mjs
._
ู ูู schema.mjs
ูุฐุง ูู ุงูู ูู ุงูุฐู ุณุชุนู ู ุนููุฉ. ููุญุชูู ุนูู ู ูุฎุทุทูู ุ ุฃุญุฏูู ุง environment variables ู ู ุฌุงูุจ ุงูุฎุงุฏู ูุงูุขุฎุฑ ู ู ุฌุงูุจ ุงูุนู ูู ุจุงูุฅุถุงูุฉ ุฅูู Object ุงูู โclientEnvโ.
export const serverSchema = z.object({
// DATABASE_URL: z.string().url(),
});
export const serverEnv = {
// DATABASE_URL: process.env.DATABASE_URL,
};
export const clientSchema = z.object({
// NEXT_PUBLIC_WS_KEY: z.string(),
});
export const clientEnv = {
// NEXT_PUBLIC_WS_KEY: process.env.NEXT_PUBLIC_WS_KEY,
};
ุงูู Server Schema
ุฃูุดุฆ ุงูู environment variables schema ู
ู ุฌุงูุจ ุงูุฎุงุฏู
ููุง.
ุชุฃูุฏ ุฃู ูุง ุชุถูู NEXT_PUBLIC
ูุจู ุงุณู
ุงูู
ุชุบูุฑุ ุณููุดู ุงูู Validation ุฅุฐุง ู
ุง ูุนูุช ูุฐุง.
ุงูู Client Schema
ุฃูุดุฆ ุงูู client-side environment variables ููุงุ ุญุชู ุชุฌุนููู
ู
ุชุงุญูุช ููู client ุฃุถู NEXT_PUBLIC
ูุจู ุงูุงุณู
.
ุงูู clientEnv Object
ูููุง ุญูุซู ุชููู
ุจุนู
ู Destruct ูู process.env
ุชุญุชุงุฌ Zod ุงูู Object ูุชููู ูุงุฏุฑุฉ ุนูู ุชุตุญูุญ ุงูู
ูุฏุฎูุงุช ูุจุณุจุจ ุทุฑููุฉ ุนู
ู Next.js ููู ูุณุชุทูุน ูุนู ูุฐุง ุชููุงุฆูุง ูุฐูู ูุฌุจ ุฃู ุชุชู
ูุฐุฉ ุงูุนู
ููุฉ ูุฏููุงุ ูุง ุชููู ูู Typescript ุชููู
ุจุชุญุฐูุฑู ุฅุฐุง ุงุฑุชูุจุช ุฎุทุงู.
// โ This doesn't work, we need to destruct it manually
const schema = z.object({
NEXT_PUBLIC_WS_KEY: z.string(),
});
const validated = schema.parse(process.env);
ุงูู server.mjs & client.mjs
ูุฐุง ูู ุงูู ูุงู ุงูุฐู ูุชู ููู ุงูุชุญูู ู ู ุงูู Object ูู ู ุซู ุชุตุฏูุฑูุง. ูู ุชุญุชุงุฌ ุฅูู ุชุนุฏูู ูุฐู ุงูู ููุงุช.
ุฅุณุชุฎุฏุงู ุงูู Environment Variables
ุฅุฐุง ุฃุฑุฏุช ุฅุณุชุฎุฏุงู
ุงูู env vars ููู
ููู ุฅุณุชูุฑุงุฏ env/client.mjs
ู env/server.mjs
ูู ุงูู
ูุงู ุงูุฐู ุชุฑูุฏ
import { env } from "../../env/server.mjs";
// `env` is fully typesafe and provides autocompletion
const dbUrl = env.DATABASE_URL;
ุงูู .env.example
ุจู
ุง ุฃู ู
ูู .env
ููุณ ู
ูุถู
ูุงู ูู ุงูู version controlุ ููุฏ ุฃุถููุง ู
ูู .env.example
ูุงูุฐู ูู
ููู ุฃู ุชุชุฑููุ ูุฃุถูุงูู ููุตุญู ุฃู ุชูุจูู ูุฐุง ุงูู
ูู ู
ุชุฒุงู
ูุง ู
ุน ุงูู
ูู ุงูุงุณุงุณู ุญุชู ุชุญุตู ุนูู ุฃูุถู ุชุฌุฑุจุฉ ุชุทููุฑ ู
ู
ููุฉ
ุฃุถู Environment Variables
ุญุชู ูุชุฃูุฏ ู ู ุฃูู ุณุชุถูู ุงูู environment variablesุ ูุฌุจ ุนููู ุฃู ุชุถูููุง ูู ู ูุงููู ู ุฎุชูููู
๐ ู
ูู .env
: ููุง ูุถูู ุงูู
ุชุบูุฑุงุช ุจุดูู ุทุจูุนู ูุงูู ุชุชุนุงู
ู ู
ุน ู
ูู .env
ุนุงุฏู
๐ ู
ูู schema.mjs
: ููุง ุชุถูู ุงูู Logic ุงูุชู ุณุชุณุชุฎุฏู
ุฉ Zod ููุญุต ุตูุงุญูุฉ ุงูู
ุชุบูุฑุงุช
๐ ู
ูู .env.example
: ููุง ุชุถูู ุงูู
ุชุบูุฑุงุช ููู ุจุฏูู ุฃู ููู
ุงุช ุณุฑูุฉ ููุญูุงุธ ุนูู ุฃู
ุงูู
ุฃู ุซูุฉ
- ุฃุถู the environment variable ุงูู
.env
:
TWITTER_API_TOKEN=1234567890
- ุฃุถู environment variable to
schema.mjs
:
export const serverSchema = z.object({
// ...
TWITTER_API_TOKEN: z.string(),
});
export const serverEnv = {
// ...
TWITTER_API_TOKEN: process.env.TWITTER_API_TOKEN,
};
ู
ูุญูุทุฉ: ุงููุต ุงููุงุฑุบ ุชุชุนุงู
ู ู
ุนุฉ zod ุนูู ุฃูู ูุต ุตุญูุญุ ุฅุฐุง ู
ุง ุงุฑุฏุช ุงู ุชูุบููุฑ ูุฐุง ุงูุงุณููุจ ูุฅุณุชุฎุฏู
z.string().min(1)
ู
ูุญูุทุฉ: ุฃุถู ุฅุณู
ุงูู
ูุชุบููุฑ TWITTER_API_TOKEN
ูู example.env ูููู ูุง ุชูุถู ุงูู token
TWITTER_API_TOKEN=