What is conf?
The 'conf' npm package is a simple yet powerful configuration management tool for Node.js applications. It allows you to easily store and retrieve configuration data, manage defaults, and handle schema validation. The data is stored in a JSON file, making it easy to read and modify.
What are conf's main functionalities?
Store and Retrieve Configuration Data
This feature allows you to store and retrieve configuration data easily. The data is stored in a JSON file, and you can set and get values using simple methods.
const Conf = require('conf');
const config = new Conf();
// Set a value
config.set('unicorn', '🦄');
// Get a value
console.log(config.get('unicorn'));
//=> '🦄'
Manage Default Values
You can define default values for your configuration settings. If a key is not set, the default value will be returned.
const Conf = require('conf');
const config = new Conf({
defaults: {
foo: 'bar'
}
});
console.log(config.get('foo'));
//=> 'bar'
Schema Validation
You can define a schema for your configuration to ensure that the data meets certain criteria. This helps in maintaining data integrity and consistency.
const Conf = require('conf');
const schema = {
type: 'object',
properties: {
foo: {
type: 'string'
},
bar: {
type: 'number',
minimum: 0
}
}
};
const config = new Conf({ schema });
config.set('foo', 'baz');
config.set('bar', 42);
console.log(config.get('foo'));
//=> 'baz'
console.log(config.get('bar'));
//=> 42
Other packages similar to conf
configstore
Configstore is another package for managing configuration data in Node.js applications. It provides similar functionality to 'conf', such as storing and retrieving data, managing defaults, and handling schema validation. However, 'conf' offers a more modern API and better TypeScript support.
node-persist
Node-persist is a simple, zero-dependency, key-value storage library for Node.js. It provides persistent storage for configuration data, similar to 'conf'. However, 'conf' offers more advanced features like schema validation and default values management.
nconf
Nconf is a hierarchical configuration manager for Node.js. It supports multiple configuration sources such as command-line arguments, environment variables, and JSON files. While 'nconf' is more flexible in terms of configuration sources, 'conf' is simpler and easier to use for most use cases.
conf
Simple config handling for your app or module
All you have to care about is what to persist. This module will handle all the dull details like where and how.
Install
$ npm install --save conf
Usage
const Conf = require('conf');
const config = new Conf();
config.set('unicorn', '🦄');
console.log(config.get('unicorn'));
config.set('foo.bar', true);
console.log(config.get('foo'));
config.delete('unicorn');
console.log(config.get('unicorn'));
Or create a subclass.
API
Conf([options])
Returns a new instance.
options
defaults
Type: Object
Default config.
configName
Type: string
Default: config
Name of the config file (without extension).
Useful if you need multiple config files for your app or module. For example, different config files between two major versions.
projectName
Type: string
Default: The name
field in your package.json
You only need to specify this if you don't have a package.json file in your project.
cwd
Type: string
Default: System default user config directory
You most likely don't need this.
The only use-case I can think of is having the config located in the app directory or on some external storage.
Instance
You can use dot-notation in a key
to access nested properties.
The instance is iterable
so you can use it directly in a for…of
loop.
.set(key, value)
Set an item.
.set(object)
Set multiple items at once.
.get(key)
Get an item.
.has(key)
Check if an item exists.
.delete(key)
Delete an item.
.clear()
Delete all items.
.size
Get the item count.
.store
Get all the config as an object or replace the current config with an object:
conf.store = {
hello: 'world'
};
.path
Get the path to the config file.
FAQ
How is this different from configstore
?
I'm also the author of configstore
. While it's pretty good, I did make some mistakes early on that are hard to change at this point. This module is the result of everything I learned from making configstore
. Mainly where config is stored. In configstore
, the config is stored in ~/.config
(which is mainly a Linux convention) on all systems, while conf
stores config in the system default user config directory. The ~/.config
directory, it turns out, often have an incorrect permission on OS X and Windows, which has caused a lot of grief for users.
Related
License
MIT © Sindre Sorhus