Skip to content

@galaxy-stack/orbit-config

Quản lý cấu hình với tải biến môi trường và xác thực Zod.

Cài đặt

bash
bun add @galaxy-stack/orbit-config

Sử dụng cơ bản

typescript
import { Module } from '@galaxy-stack/orbit-common';
import { ConfigModule, ConfigService } from '@galaxy-stack/orbit-config';

@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: '.env',
      isGlobal: true,
    }),
  ],
})
export class AppModule {}

API ConfigService

typescript
import { Injectable } from '@galaxy-stack/orbit-common';
import { ConfigService } from '@galaxy-stack/orbit-config';

@Injectable()
export class AppService {
  constructor(private config: ConfigService) {}

  getPort(): number {
    return this.config.get<number>('PORT', 3000);
  }

  getDatabaseUrl(): string {
    return this.config.getOrThrow<string>('DATABASE_URL');
  }
}

Xác thực Zod

typescript
import { z } from 'zod';

const envSchema = z.object({
  NODE_ENV: z.enum(['development', 'production', 'test']),
  PORT: z.coerce.number().default(3000),
  DATABASE_URL: z.string().url(),
  JWT_SECRET: z.string().min(32),
});

@Module({
  imports: [
    ConfigModule.forRoot({
      validate: (env) => envSchema.parse(env),
    }),
  ],
})
export class AppModule {}

Không gian tên cấu hình

typescript
// config/database.config.ts
export default () => ({
  database: {
    host: process.env.DB_HOST,
    port: parseInt(process.env.DB_PORT, 10),
    name: process.env.DB_NAME,
  },
});

@Module({
  imports: [
    ConfigModule.forRoot({
      load: [databaseConfig],
    }),
  ],
})
export class AppModule {}

// Sử dụng
const host = this.config.get<string>('database.host');

Nhiều file .env

typescript
ConfigModule.forRoot({
  envFilePath: ['.env.local', '.env'],
  expandVariables: true,
})

Released under the MIT License.