The runtime configuration loader.
npm install @anolilab/rc
[![typescript-image][typescript-badge]][typescript-url]
[![mit licence][license-badge]][license]
[![npm downloads][npm-downloads-badge]][npm-downloads]
[![Chat][chat-badge]][chat]
[![PRs Welcome][prs-welcome-badge]][prs-welcome]
---
---
``sh`
npm install @anolilab/rc
`sh`
yarn add @anolilab/rc
`sh`
pnpm add @anolilab/rc
The main function provided by this module is rc. It allows you to load configuration settings for your application from different sources.
`ts
import { rc } from "@anolilab/rc";
const { config, files } = rc("npm");
// returns a merged config object with all found npmrc files and a files list what files where found.
`
- name (string): The application name. This is used to locate configuration files and environment variables.
- options (object, optional): An object with the following properties:
- config (string, optional): Path to a specific configuration file.
- cwd (string, optional): The current working directory to start searching for configuration files. Defaults to process.cwd().
- defaults (object, optional): Default configuration values.
- home (string, optional): The home directory to use. Defaults to os.homedir().
- stopAt (string, optional): Directory to stop searching for configuration files.
Given your application name (appname), rc will look in all the obvious places for configuration.
- The defaults object you passed in
- /etc/${appname}/config/etc/${appname}rc
- $HOME/.config/${appname}/config
- $HOME/.config/${appname}
- $HOME/.${appname}/config
- $HOME/.${appname}rc
- .${appname}/config
- a local and .${appname}rc and all found looking in ../../../ ../../ ../ ./ etc.${appname}_config
- if you passed environment variable then from that file${appname}_
- if you passed options.config variable, then from that file
- environment variables prefixed with appname_foo__bar__baz
or use "\_\_" to indicate nested properties
_(e.g. => foo.bar.baz)_
All configuration sources that were found will be flattened into one object, in this exact order.
`ts`
function rc(name, options?): object;
Defined in: index.ts:193
Aggregates configuration from multiple sources (defaults, configuration files, and environment variables)
into a single object, following the same resolution logic as the original rc npm package.
The resolution order is (highest precedence last):
1. options.defaults – default values supplied by the caller${name}_
2. Configuration files discovered by getConfigFiles
3. Environment variables that start with (nested via __)
The function also returns the list of configuration file paths that were read while resolving the
configuration. No mutation is performed on any of the discovered files – they are only read.
#### Parameters
##### name
string
The base name of the application (used to derive env-var prefix and file names).
##### options?
Optional behaviour switches.
###### config?
string
Explicit path to a configuration file that should be merged last.
###### cwd?
string
Working directory to start searching for local configuration files.
###### defaults?
Record\<string, any\>
Default configuration values that act as the lowest precedence.
###### home?
string
Home directory to look for user-level configuration files. Defaults to the current user home directory.
###### stopAt?
string
Absolute path that acts as a boundary when traversing up the directory tree.
#### Returns
object
An object containing the final merged config and the ordered list of files that were considered.
##### config
`ts`
config: Record
##### files
`ts``
files: string[];
- rc - The non-configurable configuration loader for lazy people.
Libraries in this ecosystem make the best effort to track Node.js’ release schedule.
Here’s a post on why we think this is important.
If you would like to help take a look at the list of issues and check our Contributing guidelines.
> Note: please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
- Daniel Bannert
- All Contributors
This is an open source project and will always remain free to use. If you think it's cool, please star it 🌟. Anolilab is a Development and AI Studio. Contact us at hello@anolilab.com if you need any help with these technologies or just want to say hi!
The anolilab rc is open-sourced software licensed under the [MIT][license-url]
[license-badge]: https://img.shields.io/npm/l/@anolilab/rc?style=for-the-badge
[license]: https://github.com/anolilab/multi-semantic-release/blob/main/LICENSE
[npm-downloads-badge]: https://img.shields.io/npm/dm/@anolilab/rc?style=for-the-badge
[npm-downloads]: https://www.npmjs.com/package/@anolilab/rc
[prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge
[prs-welcome]: https://github.com/anolilab/multi-semantic-release/blob/main/.github/CONTRIBUTING.md
[chat-badge]: https://img.shields.io/discord/902465130518949899.svg?style=for-the-badge
[chat]: https://discord.gg/TtFJY8xkFK
[typescript-badge]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
[typescript-url]: https://www.typescriptlang.org/
[license-url]: LICENSE.md