Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

metaconfiguration

metarhia297MIT3.0.2TypeScript support: included

Metarhia Configuration Loader

config, configuration, metarhia, application, impress, environment, env, metaserverless

readme

Metarhia Configuration Loader

ci status snyk npm version npm downloads/month npm downloads license

Installation

  • npm install metaconfiguration --save
  • const { Config } = require('metaconfiguration');

Usage

Load configuration with asynchronous constructor:

const { Config } = require('metaconfiguration');
const config = await new Config('./configDirectory');
console.log(config);
// Output example:
// {
//   logger: {
//     enabled: true,
//     keepDays: 100,
//     writeInterval: 3000,
//     writeBuffer: 65536,
//     toStdout: [ 'system', 'fatal', 'error' ]
//   },
//   server: {
//     transport: 'http',
//     address: '127.0.0.1',
//     ports: 80
//   }
// }

or factory:

const { readConfig } = require('metaconfiguration');
const config = await readConfig('./configDirectory');

Specify certain configuration sections to load:

const { Config } = require('metaconfiguration');
const options = { names: ['application', 'gateway'] };
const config = await new Config('./configDirectory', options);

Loag configuration in specified mode:

const { Config } = require('metaconfiguration');
const options = { mode: 'test' };
const config = await new Config('./configDirectory', options);

Specify sections and mode:

const { Config } = require('metaconfiguration');
const options = { mode: 'test', names: ['application', 'gateway'] };
const config = await new Config('./configDirectory', options);

Use custom context (sandbox) to execute configuration js file in it:

const vm = require('node:vm');
const metautil = require('metautil');
const { Config } = require('metaconfiguration');
const context = { duration: metautil.duration };
vm.createContext(context);
const options = { context };
const config = await new Config('./configDirectory', options);

License & Contributors

Copyright (c) 2019-2025 Metarhia contributors. Metaconfiguration is MIT licensed.\ Metaconfiguration is a part of Metarhia technology stack.

changelog

Changelog

Unreleased

3.0.2 - 2025-05-21

  • Add node.js 23 and 24 to CI
  • Update dependencies

3.0.1 - 2024-08-30

  • Update eslint to 9.x and prettier
  • Add node.js 22 to CI

3.0.0 - 2023-12-11

  • Drop support of options { sandbox } use { context } instead
  • Package maintenance

2.2.0 - 2023-10-27

  • Drop node 16 and 19, add node 21 support
  • Update dependencies and package maintenance

2.1.11 - 2023-04-29

  • Drop node.js 14 support, add node.js 20
  • Convert package_lock.json to lockfileVersion 2
  • Update dependencies

2.1.10 - 2023-03-14

  • Add node: prefix in require for built-in modules
  • Update dependencies and package maintenance

2.1.9 - 2022-11-18

  • Update dependencies and package maintenance

2.1.8 - 2022-06-28

  • Update dependencies and package maintenance

2.1.7 - 2022-05-19

  • Improve security (new metavm)
  • Update dependencies and supported nodejs version

2.1.6 - 2022-03-17

  • Update dependencies
  • Improve security (new metavm)

2.1.5 - 2021-08-17

  • Move types to package root
  • Update dependencies
  • Add node.js v16 to CI and remove v15

2.1.4 - 2021-05-20

  • First release metaconfiguration, previously @metarhia/config

2.1.3 - 2021-05-20

  • Latest release @metarhia/config, next will be metaconfiguration
  • Update dependencies, fix vulnerabilities

2.1.1 - 2021-04-12

  • Update dependencies, fix vulnerabilities
  • Add typing for Config class
  • Remove names argument from configuration factory

2.1.0 - 2021-02-11

  • Change signature await new Config(dirPath, { sandbox }) to new Config(dirPath, { context }) for naming consistency with metavm
  • Internal refactoring: rename variables

2.0.0 - 2020-12-17

  • Use metavm instead of vm
  • Return promise with sections from constructor
  • Move names to options argument
  • Use Github Actions instead of Travis CI
  • Add security plicy, authors list and changelog

1.x - 2020-09-06

  • Remove options.priority
  • Tests implemented (metatests)
  • Load just specified sections (constructor argument names)

0.x - 2019-12-23

  • Load configuration in vm sandbox
  • Support configuration files order: options.priority
  • Support mode (log files second ext): options.mode
  • Support passing custom sandbox: options.sandbox