Files
dukang/server/dukang-api/src/load-env.ts
T
2026-07-06 13:18:56 +08:00

30 lines
858 B
TypeScript

import { config } from 'dotenv';
import { existsSync } from 'fs';
import { resolve } from 'path';
/**
* 分层加载环境变量(后加载的文件覆盖先前的同名键):
* 1. .env.{NODE_ENV} — 集成配置(MOCK_SMS、微信、阿里云等)
* 2. .env.{NODE_ENV}.local / .env.local — 本机覆盖
* 3. .env — 本机基础(PORT、DATABASE_URL);应只放机器相关项,勿重复 MOCK_SMS
*/
const apiRoot = resolve(__dirname, '..');
const nodeEnv = process.env.NODE_ENV ?? 'development';
const layers = [
resolve(apiRoot, `.env.${nodeEnv}`),
resolve(apiRoot, `.env.${nodeEnv}.local`),
resolve(apiRoot, '.env.local'),
resolve(apiRoot, '.env'),
];
for (const file of layers) {
if (existsSync(file)) {
config({ path: file, override: true });
}
}
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = nodeEnv;
}