Globals / "src/common/base-store" / BaseStoreParams
Interface: BaseStoreParams\#
Type parameters#
| Name | Default |
|---|---|
T |
any |
Hierarchy#
- Options\
↳ BaseStoreParams
Index#
Properties#
- accessPropertiesByDotNotation
- autoLoad
- clearInvalidConfig
- configName
- cwd
- defaults
- deserialize
- encryptionKey
- fileExtension
- migrations
- projectName
- projectSuffix
- projectVersion
- schema
- serialize
- syncEnabled
- syncOptions
- watch
Properties#
accessPropertiesByDotNotation#
• Optional Readonly accessPropertiesByDotNotation: boolean
Inherited from BaseStoreParams.accessPropertiesByDotNotation
Defined in node_modules/conf/dist/source/types.d.ts:193
Access nested properties by dot notation.
default true
example
const config = new Conf();
config.set({
foo: {
bar: {
foobar: '🦄'
}
}
});
console.log(config.get('foo.bar.foobar'));
//=> '🦄'
Alternatively, you can set this option to false so the whole string would be treated as one key.
example
const config = new Conf({accessPropertiesByDotNotation: false});
config.set({
`foo.bar.foobar`: '🦄'
});
console.log(config.get('foo.bar.foobar'));
//=> '🦄'
autoLoad#
• Optional autoLoad: boolean
Defined in src/common/base-store.ts:13
clearInvalidConfig#
• Optional clearInvalidConfig: boolean
Inherited from BaseStoreParams.clearInvalidConfig
Defined in node_modules/conf/dist/source/types.d.ts:128
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.
default true
configName#
• Optional configName: string
Inherited from BaseStoreParams.configName
Defined in node_modules/conf/dist/source/types.d.ts:55
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.
default 'config'
cwd#
• Optional cwd: string
Inherited from BaseStoreParams.cwd
Defined in node_modules/conf/dist/source/types.d.ts:104
You most likely don't need this. Please don't use it unless you really have to.
The only use-case I can think of is having the config located in the app directory or on some external storage. Default: System default user config directory.
defaults#
• Optional defaults: Readonly\
Inherited from BaseStoreParams.defaults
Defined in node_modules/conf/dist/source/types.d.ts:11
Config used if there are no existing config.
Note:* The values in defaults will overwrite the default key in the schema option.
deserialize#
• Optional Readonly deserialize: Deserialize\
Inherited from BaseStoreParams.deserialize
Defined in node_modules/conf/dist/source/types.d.ts:144
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.
default JSON.parse
encryptionKey#
• Optional encryptionKey: string | Buffer | NodeJS.TypedArray | DataView
Inherited from BaseStoreParams.encryptionKey
Defined in node_modules/conf/dist/source/types.d.ts:114
Note that this is not intended for security purposes, since the encryption key would be easily found inside a plain-text Node.js app.
Its main use is for obscurity. If a user looks through the config directory and finds the config file, since it's just a JSON file, they may be tempted to modify it. By providing an encryption key, the file will be obfuscated, which should hopefully deter any users from doing so.
It also has the added bonus of ensuring the config file's integrity. If the file is changed in any way, the decryption will not work, in which case the store will just reset back to its default state.
When specified, the store will be encrypted using the aes-256-cbc encryption algorithm.
fileExtension#
• Optional fileExtension: string
Inherited from BaseStoreParams.fileExtension
Defined in node_modules/conf/dist/source/types.d.ts:122
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.
default 'json'
migrations#
• Optional migrations: Migrations\
Inherited from BaseStoreParams.migrations
Defined in node_modules/conf/dist/source/types.d.ts:98
You can use migrations to perform operations to the store whenever a version is changed.
The migrations object should consist of a key-value pair of 'version': handler. The version can also be a semver range.
Note: The version the migrations use refers to the project version by default. If you want to change this behavior, specify the projectVersion option.
example
import Conf = require('conf');
const store = new Conf({
migrations: {
'0.0.1': store => {
store.set('debugPhase', true);
},
'1.0.0': store => {
store.delete('debugPhase');
store.set('phase', '1.0.0');
},
'1.0.2': store => {
store.set('phase', '1.0.2');
},
'>=2.0.0': store => {
store.set('phase', '>=2.0.0');
}
}
});
projectName#
• Optional projectName: string
Inherited from BaseStoreParams.projectName
Defined in node_modules/conf/dist/source/types.d.ts:61
You only need to specify this if you don't have a package.json file in your project or if it doesn't have a name defined within it.
Default: The name field in the package.json closest to where conf is imported.
projectSuffix#
• Optional Readonly projectSuffix: string
Inherited from BaseStoreParams.projectSuffix
Defined in node_modules/conf/dist/source/types.d.ts:156
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.
You can pass an empty string to remove the suffix.
For example, on macOS, the config file will be stored in the ~/Library/Preferences/foo-nodejs directory, where foo is the projectName.
default 'nodejs'
projectVersion#
• Optional projectVersion: string
Inherited from BaseStoreParams.projectVersion
Defined in node_modules/conf/dist/source/types.d.ts:67
You only need to specify this if you don't have a package.json file in your project or if it doesn't have a version defined within it.
Default: The name field in the package.json closest to where conf is imported.
schema#
• Optional schema: Schema\
Inherited from BaseStoreParams.schema
Defined in node_modules/conf/dist/source/types.d.ts:47
JSON Schema to validate your config data.
Under the hood, the JSON Schema validator ajv is used to validate your config. We use JSON Schema draft-07 and support all validation keywords and formats.
You should define your schema as an object where each key is the name of your data's property and each value is a JSON schema used to validate that property. See more here.
example
import Conf = require('conf');
const schema = {
foo: {
type: 'number',
maximum: 100,
minimum: 1,
default: 50
},
bar: {
type: 'string',
format: 'url'
}
};
const config = new Conf({schema});
console.log(config.get('foo'));
//=> 50
config.set('foo', '1');
// [Error: Config schema violation: `foo` should be number]
Note:* The default value will be overwritten by the defaults option if set.
serialize#
• Optional Readonly serialize: Serialize\
Inherited from BaseStoreParams.serialize
Defined in node_modules/conf/dist/source/types.d.ts:136
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.
default value => JSON.stringify(value, null, '\t')
syncEnabled#
• Optional syncEnabled: boolean
Defined in src/common/base-store.ts:14
syncOptions#
• Optional syncOptions: IReactionOptions
Defined in src/common/base-store.ts:15
watch#
• Optional Readonly watch: boolean
Inherited from BaseStoreParams.watch
Defined in node_modules/conf/dist/source/types.d.ts:201
Watch for any changes in the config file and call the callback for onDidChange if set. This is useful if there are multiple processes changing the same config file.
Currently this option doesn't work on Node.js 8 on macOS.
default false