Mengimplementasikan Environment Variable Management Best Practices dengan Claude Code
Pelajari tentang implementing environment variable management best practices menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.
environment variablemanajemenがpentingな理由
aplikasipengembangan 、APIキーやdatabasekoneksi情報 dll. 機密情報 aman manajemen diperlukan あり.environment variable そ dasar手段 す 、type safety性やvalidasi 不足し ち.Claude Code 使えば、robustなenvironment variablemanajemen mekanisme 素早くpembangunan bisa dilakukan.
loading type safetyなenvironment variable
> environment variable zod dengan validasiしてtype safety 読み込むmodul buatkan.
> 必須・任意 区別 dan 、デフォルト値 pengaturan juga dengan きるよう.
import { z } from 'zod';
const envSchema = z.object({
NODE_ENV: z.enum(['development', 'staging', 'production']).default('development'),
PORT: z.coerce.number().int().positive().default(3000),
DATABASE_URL: z.string().url(),
REDIS_URL: z.string().url().optional(),
API_KEY: z.string().min(1, 'API_KEY 必須 す'),
JWT_SECRET: z.string().min(32, 'JWT_SECRET 32文字以上diperlukan す'),
CORS_ORIGINS: z.string().transform((s) => s.split(',')).default('http://localhost:3000'),
LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
});
export type Env = z.infer<typeof envSchema>;
function loadEnv(): Env {
const result = envSchema.safeParse(process.env);
if (!result.success) {
const formatted = result.error.format();
console.error('environment variable validasierror:');
for (const [key, value] of Object.entries(formatted)) {
if (key !== '_errors' && value && '_errors' in value) {
console.error(` ${key}: ${(value as any)._errors.join(', ')}`);
}
}
process.exit(1);
}
return result.data;
}
export const env = loadEnv();
templatemanajemen .envfile
> .env.example 自動generateするscript buatkan.
> 実際 値 含めず、説明コメント付き dengan 。
import fs from 'fs';
import path from 'path';
function generateEnvExample(envPath: string, outputPath: string) {
const envContent = fs.readFileSync(envPath, 'utf-8');
const lines = envContent.split('\n');
const exampleLines = lines.map((line) => {
if (line.startsWith('#') || line.trim() === '') return line;
const [key] = line.split('=');
const descriptions: Record<string, string> = {
DATABASE_URL: '# databasekoneksiURL (例: postgresql://user:pass@localhost:5432/db)',
API_KEY: '# APIキー (environment produksi aman manajemen ください)',
JWT_SECRET: '# JWT署名用シークレット (32文字以上)',
};
const comment = descriptions[key?.trim()] || '';
return `${comment}\n${key?.trim()}=`;
});
fs.writeFileSync(outputPath, exampleLines.join('\n'));
}
pengaturanperalihan 環境ご
> 環境ご dan 異なるpengaturan manajemenするConfigclass buatkan.
> development, staging, production 3環境 support.
interface AppConfig {
database: { pool: number; ssl: boolean };
cache: { ttl: number; enabled: boolean };
logging: { level: string; format: string };
}
const configs: Record<string, AppConfig> = {
development: {
database: { pool: 5, ssl: false },
cache: { ttl: 60, enabled: false },
logging: { level: 'debug', format: 'pretty' },
},
production: {
database: { pool: 20, ssl: true },
cache: { ttl: 3600, enabled: true },
logging: { level: 'warn', format: 'json' },
},
};
export function getConfig(): AppConfig {
const nodeEnv = env.NODE_ENV;
return configs[nodeEnv] ?? configs.development;
}
ローテーションdukungan シークレット
機密情報 ローテーション aman 行う untuk 、複数versi シークレット 同時 保持 mekanisme juga pembangunan bisa dilakukan.
class SecretManager {
private secrets: Map<string, string[]> = new Map();
register(key: string, ...values: string[]) {
this.secrets.set(key, values.filter(Boolean));
}
getCurrent(key: string): string {
const values = this.secrets.get(key);
if (!values || values.length === 0) {
throw new Error(`Secret not found: ${key}`);
}
return values[0];
}
verify(key: string, token: string, verifyFn: (secret: string, token: string) => boolean): boolean {
const values = this.secrets.get(key) ?? [];
return values.some((secret) => verifyFn(secret, token));
}
}
const secrets = new SecretManager();
secrets.register('JWT_SECRET', env.JWT_SECRET, process.env.JWT_SECRET_PREVIOUS ?? '');
Summary
Mengenai Claude Codeを使えば、zodによるtype safetyなvalidasi、環境別pengaturan、シークレットmanajemenまで、environment variablemanajemenのmekanismeを一貫してpembangunanできます。セキュリティのdasarとして認証implementasipanduanも参考にしてください。testのotomatisasi, 詳しくpenjelasanしています。 di テスト戦略の記事.
zod 詳細 Zod公式dokumen silakan lihat.environment variablemanajemen セキュリティ mengenai OWASP Configuration Guide juga bisa dijadikan referensi.
Tingkatkan alur kerja Claude Code kamu
50 template prompt yang sudah teruji, siap copy-paste ke Claude Code sekarang juga.
PDF Gratis: Cheatsheet Claude Code dalam 5 Menit
Perintah penting, pintasan, dan contoh prompt dalam satu halaman siap cetak.
Tentang Penulis
Masa
Engineer yang aktif menggunakan Claude Code. Mengelola claudecode-lab.com, media teknologi 10 bahasa dengan lebih dari 2.000 halaman.
Artikel Terkait
Membuat Perintah Slash Kustom di Claude Code — Alur Kerja Anda
Pelajari cara membuat perintah slash kustom di Claude Code. Mencakup penempatan file, argumen, dan otomatisasi tugas berulang dengan contoh kode praktis.
10 Tips untuk Melipatgandakan Produktivitas dengan Claude Code
Temukan 10 tips praktis untuk memaksimalkan Claude Code. Dari strategi prompt hingga shortcut workflow, teknik-teknik ini akan meningkatkan efisiensimu mulai hari ini.
Optimasi Canvas/WebGL dengan Claude Code
Pelajari tentang optimasi Canvas/WebGL menggunakan Claude Code. Tips praktis dan contoh kode disertakan.