Configuration examples
Config Plugin
@dxos/config
provides plugins for a number of bundlers which allow the config to be loaded from yaml files at the package root rather than specified inline.
import { defineConfig } from 'vite';import { ConfigPlugin } from '@dxos/config/vite-plugin';
export default defineConfig({ ... plugins: [ ConfigPlugin(), ... ]});
import { ConfigPlugin } from '@dxos/config/rollup-plugin';
export default { ... plugins: [ ConfigPlugin(), ... ]};
import { build } from 'esbuild';import { ConfigPlugin } from '@dxos/config/esbuild-plugin';
await build({ ... bundle: true, plugins: [ ConfigPlugin(), ... ]})
This allows config to be defined using one or more of the follow functions:
Loading config defaults from a file
Any config included in the dx.yml
file will be returned by Defaults
.
import { Client, Config } from '@dxos/client';import { Defaults } from '@dxos/config';
const _client = new Client({ config: new Config(Defaults()),});
Local development configuration
Often it is convenient to have different configuration presets for local development.
For this purpose there is Local
which will return any config included in the dx-local.yml
file.
import { Client, Config } from '@dxos/client';import { Defaults, Local } from '@dxos/config';
const _client = new Client({ config: new Config(Local(), Defaults()),});
App configuration with environment variables
The config plugin provides an easy way to map environment variables to config values using the dx-env.yml
file.
import { Client, Config } from '@dxos/client';import { Defaults, Envs, Local } from '@dxos/config';
const _client = new Client({ config: new Config(Envs(), Local(), Defaults()),});
This file takes the following format:
LOG_FILTER: path: runtime.client.log.filter type: string
LOG_PREFIX: path: runtime.client.log.prefix type: string
DX_PERSIST: path: runtime.client.storage.persistence type: boolean
Loading app-specific environment variables
Bundlers such as Vite will automatically provide access to any enviroment variables prefixed with VITE_
, however sometimes it’s not convenient to prefix every variable you need access to. The config plugin provides a way to load arbitrary enviroment variables at build time.
import { defineConfig } from 'vite';import { ConfigPlugin } from '@dxos/config/vite-plugin';
export default defineConfig({ ... plugins: [ ConfigPlugin({ env: ['MY_ENV_VAR'] }), ... ]});
This can then be accessed at the config path runtime.app.env.MY_ENV_VAR
.