Tool for generating static domain configs.
- Simple config inheritance.
- Simple domain config inheritance.
- Config validation against JSON-schema.
- Customizing domain list for different environments.
npm:
npm install --save-dev yandex-domain-configs
yarn:
yarn add -D yandex-domain-configs
npm:
node_modules/.bin/yandex-domain-configs [options]
yarn:
yarn yandex-domain-configs -- [options]
-i, --input <filename> Input file
-o, --output-dir <dirname> Output directory
-s, --schema <filename> JSON Schema
-h, --help output usage information
config.base.yaml
:
# default settings
foo: 0
# objects are merged recursively when overriden
bar:
baz: 1
# domain settings override the default ones
$domains:
yandex.ru
foo: 2
yandex.com
# yandex.com will inherit settings from yandex.ru
$extends: yandex.ru
bar:
baz: 3
config.production.yaml
:
$extends: config.base.yaml
# these settings override the default ones in the base config
bar:
baz: 5
# domains not listed here will be ignored
$domainList:
- yandex.ru
- yandex.com
# these settings override domain settings in the base config
$domains:
yandex.ru
foo: 6
config.schema.yaml
:
title: Project configuration
type: object
required:
- foo
- bar
properties:
foo:
title: Foo description
type: integer
bar:
title: Bar description
type: object
required:
- baz
properties:
baz:
title: Baz description
type: integer
yarn yandex-domain-configs -- -i config.production.xml -o production -s config.schema.yaml
production/yandex.ru.json
:
{
"foo": 6,
"bar": {
"baz": 5
}
}
production/yandex.com.json
:
{
"foo": 6,
"bar": {
"baz": 3
}
}