Skip to content

Configuration

ConfigServiceProvider loads .env from the application root via async loadEnv(), then imports every config/*.ts file into a ConfigRepository. Config file discovery uses async filesystem APIs.

typescript
// .env
APP_NAME=Tyravel
APP_DEBUG=true

// config/app.ts
import { env } from '@tyravel/config';

export default {
  name: env('APP_NAME', 'Tyravel'),
  debug: env('APP_DEBUG', true),
} as const;

Access config anywhere after boot:

typescript
const config = app.make<ConfigRepository>('config');
const name = config.get<string>('app.name');

Package config merge

Packages can register defaults that merge with app overrides (Laravel-style mergeConfigFrom):

typescript
await this.mergeConfigFrom(join(import.meta.dirname, '../config/lontar.js'), 'lontar');

Or merge an object directly:

typescript
app.mergeConfig('lontar', { perPage: 15, feed: { title: 'Lontar' } });

App values win on conflicts; nested keys are merged recursively.

Released under the MIT License.