Simple config handling for your app or module
import Conf from "https://deno.land/x/conf/mod.ts";
const config = new Conf({
projectName: "test"
});
config.set("unicorn", "🦄");
console.log(config.get("unicorn"));
//=> '🦄'
config.delete("unicorn");
console.log(config.get("unicorn"));
//=> undefined
Changes are written to disk atomically, so if the process crashes during a write, it will not corrupt the existing config.
Returns a new instance.
Type: object
Type: object
Default values for the config items.
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.
Type: string
*Required
Type: string
Default: System default user config directory
You most likely don't need this. Please don't use it unless you really have to. By default, it will pick the optimal location by adhering to system conventions. You are very likely to get this wrong and annoy users.
Overrides projectName
.
The only use-case I can think of is having the config located in the app directory or on some external storage.
Type: string
Default: 'json'
Extension of the config file.
You would usually not need this, but could be useful if you want to interact with a file with a custom file extension that can be associated with your app. These might be simple save/export/preference files that are intended to be shareable or saved outside of the app.
Type: boolean
Default: true
The config is cleared if reading the config file causes a SyntaxError
. This is a good default, as the config file is not intended to be hand-edited, so it usually means the config is corrupt and there's nothing the user can do about it anyway. However, if you let the user edit the config file directly, mistakes might happen and it could be more useful to throw an error when the config is invalid instead of clearing. Disabling this option will make it throw a SyntaxError
on invalid config instead of clearing.
Type: Function
Default: value => JSON.stringify(value, null, '\t')
Function to serialize the config object to a UTF-8 string when writing the config file.
You would usually not need this, but it could be useful if you want to use a format other than JSON.
Type: Function
Default: JSON.parse
Function to deserialize the config object from a UTF-8 string when reading the config file.
You would usually not need this, but it could be useful if you want to use a format other than JSON.
Type: string
Default: 'deno'
You most likely don't need this. Please don't use it unless you really have to.
Suffix appended to projectName
during config file creation to avoid name conflicts with native apps.
For example, on macOS, the config file will be stored in the ~/Library/Preferences/foo-deno
directory, where foo
is the projectName
.
The instance is iterable
so you can use it directly in a for…of
loop.
Set an item.
The value
must be JSON serializable. Trying to set the type undefined
, function
, or symbol
will result in a TypeError.
Set multiple items at once.
Get an item or defaultValue
if the item does not exist.
Reset items to their default values, as defined by the defaults
or schema
option.
Check if an item exists.
Delete an item.
Delete all items.
Get the item count.
Get all the config as an object or replace the current config with an object:
conf.store = {
hello: "world",
};
Get the path to the config file.
Inspired by conf from sindresorhus.