config
Module that handles all vlt configuration needs
Project-level configs are set in a vlt.json file in the local project
if present, and are layered over the user-level configs in the appropriate
XDG config path. See ./merge-layers.ts for the layering rules.
Command-specific configuration can be specified by putting options in a
field in the command object. For example:
{
"registry": "https://registry.npmjs.org/",
"command": {
"publish": {
"registry": "http://registry.internal"
}
}
}Classes
Config
Defined in: src/cli-sdk/src/config/index.ts:298
Class that handles configuration for vlt.
Call Config.load to get one of these.
Constructors
new Config()
new Config(jack, projectRoot): ConfigDefined in: src/cli-sdk/src/config/index.ts:430
Parameters
| Parameter | Type | Default value |
|---|---|---|
jack | Jack<…> | definition |
projectRoot | string | ... |
Returns
Properties
| Property | Type | Default value | Description |
|---|---|---|---|
command? | | "version" | "registry" | "cache" | "config" | "query" | "help" | "access" | "bugs" | "build" | "ci" | "create" | "deprecate" | "dist-tag" | "docs" | "exec" | "exec-local" | "init" | "install" | "login" | "logout" | "list" | "pack" | "ping" | "pkg" | "profile" | "publish" | "repo" | "run-exec" | "run" | "setup" | "token" | "uninstall" | "unpublish" | "update" | "exec-cache" | "view" | "whoami" | undefined | Which command name to use for overriding with command-specific values, determined from the argv when parse() is called. |
commands | object | undefined | Record<alias, canonical name> to dereference command aliases. |
commands.? | "help" | 'help' | - |
commands.access | "access" | 'access' | - |
commands.add | "install" | 'install' | - |
commands.b | "build" | 'build' | - |
commands.bugs | "bugs" | 'bugs' | - |
commands.build | "build" | 'build' | - |
commands.cache | "cache" | 'cache' | - |
commands.ci | "ci" | 'ci' | - |
commands.config | "config" | 'config' | - |
commands.create | "create" | 'create' | - |
commands.deprecate | "deprecate" | 'deprecate' | - |
commands.dist-tag | "dist-tag" | 'dist-tag' | - |
commands.docs | "docs" | 'docs' | - |
commands.exec | "exec" | 'exec' | - |
commands.exec-cache | "exec-cache" | 'exec-cache' | - |
commands.exec-local | "exec-local" | 'exec-local' | - |
commands.h | "help" | 'help' | - |
commands.help | "help" | 'help' | - |
commands.i | "install" | 'install' | - |
commands.info | "view" | 'view' | - |
commands.init | "init" | 'init' | - |
commands.install | "install" | 'install' | - |
commands.list | "list" | 'list' | - |
commands.login | "login" | 'login' | - |
commands.logout | "logout" | 'logout' | - |
commands.ls | "list" | 'list' | - |
commands.p | "pkg" | 'pkg' | - |
commands.pack | "pack" | 'pack' | - |
commands.ping | "ping" | 'ping' | - |
commands.pkg | "pkg" | 'pkg' | - |
commands.profile | "profile" | 'profile' | - |
commands.pub | "publish" | 'publish' | - |
commands.publish | "publish" | 'publish' | - |
commands.q | "query" | 'query' | - |
commands.query | "query" | 'query' | - |
commands.r | "run" | 'run' | - |
commands.registry | "registry" | 'registry' | - |
commands.repo | "repo" | 'repo' | - |
commands.rm | "uninstall" | 'uninstall' | - |
commands.run | "run" | 'run' | - |
commands.run-exec | "run-exec" | 'run-exec' | - |
commands.run-script | "run" | 'run' | - |
commands.rx | "run-exec" | 'run-exec' | - |
commands.setup | "setup" | 'setup' | - |
commands.show | "view" | 'view' | - |
commands.token | "token" | 'token' | - |
commands.u | "update" | 'update' | - |
commands.uninstall | "uninstall" | 'uninstall' | - |
commands.unpublish | "unpublish" | 'unpublish' | - |
commands.update | "update" | 'update' | - |
commands.version | "version" | 'version' | - |
commands.view | "view" | 'view' | - |
commands.whoami | "whoami" | 'whoami' | - |
commands.x | "exec" | 'exec' | - |
commands.xc | "exec-cache" | 'exec-cache' | - |
commands.xl | "exec-local" | 'exec-local' | - |
commandValues | object | {} | Command-specific config values |
commandValues.access? | ConfigData | undefined | - |
commandValues.bugs? | ConfigData | undefined | - |
commandValues.build? | ConfigData | undefined | - |
commandValues.cache? | ConfigData | undefined | - |
commandValues.ci? | ConfigData | undefined | - |
commandValues.config? | ConfigData | undefined | - |
commandValues.create? | ConfigData | undefined | - |
commandValues.deprecate? | ConfigData | undefined | - |
commandValues.dist-tag? | ConfigData | undefined | - |
commandValues.docs? | ConfigData | undefined | - |
commandValues.exec? | ConfigData | undefined | - |
commandValues.exec-cache? | ConfigData | undefined | - |
commandValues.exec-local? | ConfigData | undefined | - |
commandValues.help? | ConfigData | undefined | - |
commandValues.init? | ConfigData | undefined | - |
commandValues.install? | ConfigData | undefined | - |
commandValues.list? | ConfigData | undefined | - |
commandValues.login? | ConfigData | undefined | - |
commandValues.logout? | ConfigData | undefined | - |
commandValues.pack? | ConfigData | undefined | - |
commandValues.ping? | ConfigData | undefined | - |
commandValues.pkg? | ConfigData | undefined | - |
commandValues.profile? | ConfigData | undefined | - |
commandValues.publish? | ConfigData | undefined | - |
commandValues.query? | ConfigData | undefined | - |
commandValues.registry? | ConfigData | undefined | - |
commandValues.repo? | ConfigData | undefined | - |
commandValues.run? | ConfigData | undefined | - |
commandValues.run-exec? | ConfigData | undefined | - |
commandValues.setup? | ConfigData | undefined | - |
commandValues.token? | ConfigData | undefined | - |
commandValues.uninstall? | ConfigData | undefined | - |
commandValues.unpublish? | ConfigData | undefined | - |
commandValues.update? | ConfigData | undefined | - |
commandValues.version? | ConfigData | undefined | - |
commandValues.view? | ConfigData | undefined | - |
commandValues.whoami? | ConfigData | undefined | - |
explicit | ConfigData | {} | Values set on the command line or via VLT_* env for this run. Record fields hold only those key=value pairs, not the ones from config files. VLT_* env left as a parent vlt process wrote it only counts for what was explicit in that parent. |
jack | Jack<…> | undefined | The JackSpeak object representing vlt's configuration |
positionals? | string[] | undefined | positional arguments to the vlt process |
projectRoot | string | undefined | The root of the project where a vlt.json, vlt.json, package.json, or .git was found. Not necessarily the process.cwd(), though that is the default location. Never walks up as far as $HOME. So for example, if a project is in ~/projects/xyz, then the highest dir it will check is ~/projects |
values? | OptionsResults<…> | undefined | Parsed values in effect |
Accessors
layers
Get Signature
get layers(): Readonly<{
project: Partial<PairsAsRecords>;
user: Partial<PairsAsRecords>;
}>Defined in: src/cli-sdk/src/config/index.ts:733
The raw config data from each vlt.json file, normalized to record
form, before the layers are merged together. undefined for a layer
with no file, or a file with no config field.
Returns
Readonly<{
project: Partial<PairsAsRecords>;
user: Partial<PairsAsRecords>;
}>
options
Get Signature
get options(): ConfigOptionsDefined in: src/cli-sdk/src/config/index.ts:320
A flattened object of the parsed configuration
Returns
Methods
addConfigToFile()
addConfigToFile(
this,
which,
values): Promise<void>Defined in: src/cli-sdk/src/config/index.ts:651
Fold in the provided fields with the existing properties in the config file.
Parameters
| Parameter | Type |
|---|---|
this | ParsedConfig |
which | WhichConfig |
values | NonNullable<ConfigFileData> |
Returns
Promise<void>
deleteConfigKeys()
deleteConfigKeys(
this,
which,
fields): Promise<boolean>Defined in: src/cli-sdk/src/config/index.ts:794
Deletes the specified config fields from the named file
Returns true if anything was changed.
Parameters
| Parameter | Type |
|---|---|
this | ParsedConfig |
which | WhichConfig |
fields | string[] |
Returns
Promise<boolean>
editConfigFile()
editConfigFile(
this,
which,
edit): Promise<void>Defined in: src/cli-sdk/src/config/index.ts:847
Edit the user or project configuration file.
If the file isn't present, then it starts with {} so the user has
something to work with.
If the result is not valid, or no config settings are contained in the file after editing, then it's restored to what it was before, which might mean deleting the file.
Parameters
| Parameter | Type |
|---|---|
this | ParsedConfig |
which | WhichConfig |
edit | (file) => void | Promise<void> |
Returns
Promise<void>
get()
get<K>(k): OptionsResults<…>[K]Defined in: src/cli-sdk/src/config/index.ts:628
Get a configuration value.
Note: key=value pair configs are returned as a string array. To get them
as an object, use Config#getRecord.
Type Parameters
| Type Parameter |
|---|
K extends | "version" | "color" | "no-color" | "registry" | "default-registry-alias" | "registries" | "scoped-registries" | "jsr-registries" | "git-hosts" | "git-host-archives" | "cache" | "config" | "store-linker" | "tag" | "before" | "os" | "arch" | "libc" | "node-version" | "git-shallow" | "fetch-retries" | "fetch-retry-factor" | "fetch-retry-mintimeout" | "fetch-retry-maxtimeout" | "stale-while-revalidate-factor" | "identity" | "workspace" | "workspace-group" | "scope" | "target" | "if-present" | "recursive" | "bail" | "no-bail" | "all" | "editor" | "script-shell" | "fallback-command" | "help" | "access" | "view" | "package" | "call" | "loglevel" | "verbose" | "dashboard-root" | "save-dev" | "save-exact" | "save-optional" | "save-peer" | "save-prod" | "save-config" | "save-prefix" | "expect-results" | "dry-run" | "force" | "expect-lockfile" | "frozen-lockfile" | "lockfile-only" | "allow-scripts" | "git-tag-version" | "commit" | "otp" | "publish-directory" | "telemetry" | "yes" |
Parameters
| Parameter | Type |
|---|---|
k | K |
Returns
OptionsResults<…>[K]
getRecord()
getRecord(k): RecordStringDefined in: src/cli-sdk/src/config/index.ts:604
Get a key=value list option value as an object.
For example, a list option with a vlaue of ['key=value', 'xyz=as=df' ]
would be returned as {key: 'value', xyz: 'as=df'}
Results are memoized, so subsequent calls for the same key will return the same object. If new strings are added to the list, then the memoized value is not updated, so only use once configurations have been fully loaded.
If the config value is not set at all, an empty object is returned.
Parameters
| Parameter | Type |
|---|---|
k | | "registries" | "scoped-registries" | "jsr-registries" | "git-hosts" | "git-host-archives" | "workspace" | "workspace-group" | "dashboard-root" |
Returns
loadConfigFile()
loadConfigFile(): Promise<Config>Defined in: src/cli-sdk/src/config/index.ts:889
Find the local config file and load both it and the user-level config in the XDG config home.
Returns
Promise<Config>
parse()
parse(args): Config & objectDefined in: src/cli-sdk/src/config/index.ts:442
Parse the arguments and set configuration and positionals accordingly.
Parameters
| Parameter | Type | Default value |
|---|---|---|
args | string[] | process.argv |
Returns
Config & object
reloadFromDisk()
reloadFromDisk(): Promise<void>Defined in: src/cli-sdk/src/config/index.ts:910
Force a complete reload of config files from disk. This clears all caches and re-reads config files. Useful for long-running processes that need to pick up config changes.
Returns
Promise<void>
resetOptions()
resetOptions(projectRoot): voidDefined in: src/cli-sdk/src/config/index.ts:389
Reset the options value, optionally setting a new project root to recalculate the options.
Parameters
| Parameter | Type |
|---|---|
projectRoot | string |
Returns
void
writeConfigFile()
writeConfigFile(
this,
which,
values): Promise<void>Defined in: src/cli-sdk/src/config/index.ts:638
Write the config values to the user or project config file.
Parameters
| Parameter | Type |
|---|---|
this | ParsedConfig |
which | WhichConfig |
values | NonNullable<ConfigFileData> |
Returns
Promise<void>
load()
static load(projectRoot, argv): Promise<ParsedConfig>Defined in: src/cli-sdk/src/config/index.ts:944
Load the configuration and return a Promise to a Config object
Parameters
| Parameter | Type | Default value |
|---|---|---|
projectRoot | string | ... |
argv | string[] | process.argv |
Returns
Promise<ParsedConfig>
Type Aliases
ConfigData
type ConfigData = ConfigDataNoCommand & object;Defined in: src/cli-sdk/src/config/index.ts:236
Config data can be any options, and also a 'command' field which contains command names and override options for that command.
Type declaration
| Name | Type |
|---|---|
command? | { [k in keyof Commands]?: ConfigDataNoCommand } |
ConfigDataNoCommand
type ConfigDataNoCommand = { [k in keyof OptionsResults<ConfigDefinitions>]?: OptionsResults<ConfigDefinitions>[k] };Defined in: src/cli-sdk/src/config/index.ts:226
ConfigDefinitions
type ConfigDefinitions = Unwrap<typeof definition>;Defined in: src/cli-sdk/src/config/index.ts:283
The base config definition set as a type
ConfigFileData
type ConfigFileData = ConfigFileDataNoCommand & object;Defined in: src/cli-sdk/src/config/index.ts:254
Config data as it appears in the config field of the vlt.json, with kv pair
lists stored as Record<string, string> and
Type declaration
| Name | Type |
|---|---|
command? | { [k in keyof Commands]?: ConfigFileDataNoCommand } |
ConfigFileDataNoCommand
type ConfigFileDataNoCommand = { [k in keyof ConfigDataNoCommand]: k extends OptListKeys<ConfigDataNoCommand> ? RecordString | string[] : ConfigDataNoCommand[k] };Defined in: src/cli-sdk/src/config/index.ts:242
ConfigFileLayer
type ConfigFileLayer = Partial<PairsAsRecords>;Defined in: src/cli-sdk/src/config/index.ts:101
One vlt.json file's config object, in record form. Every field is
optional, since a config file only sets what it sets.
ConfigOptions
type ConfigOptions = ConfigOptionsNoExtras & Pick<SpecOptions, "catalog" | "catalogs"> & object;Defined in: src/cli-sdk/src/config/index.ts:269
Type declaration
| Name | Type | Description |
|---|---|---|
monorepo? | Monorepo | - |
packageInfo | PackageInfoClient | - |
packageJson | PackageJson | - |
projectRoot | string | - |
scurry | PathScurry | - |
storeRoot | string | global store root, under cache |
ConfigOptionsNoExtras
type ConfigOptionsNoExtras = { [k in keyof OptionsResults<ConfigDefinitions>]: k extends RecordField ? RecordString : k extends "command" ? never : OptionsResults<ConfigDefinitions>[k] };Defined in: src/cli-sdk/src/config/index.ts:260
LoadedConfig
type LoadedConfig = ParsedConfig;Defined in: src/cli-sdk/src/config/index.ts:973
A fully loaded Config object
OptListKeys<O>
type OptListKeys<O> = Exclude<StringListKeys<O>[keyof StringListKeys<O>], undefined>;Defined in: src/cli-sdk/src/config/index.ts:288
Type Parameters
| Type Parameter |
|---|
O |
PairsAsRecords
type PairsAsRecords = ConfigOptionsNoExtras & object;Defined in: src/cli-sdk/src/config/index.ts:91
Type declaration
| Name | Type |
|---|---|
command? | { [k in keyof Commands]?: ConfigOptionsNoExtras } |
ParsedConfig
type ParsedConfig = Config & object;Defined in: src/cli-sdk/src/config/index.ts:964
Type declaration
| Name | Type |
|---|---|
command | NonNullable<Config["command"]> |
positionals | string[] |
values | OptionsResults<ConfigDefinitions> |
RecordPairs
type RecordPairs = Record<string, unknown>;Defined in: src/cli-sdk/src/config/index.ts:66
RecordString
type RecordString = Record<string, string>;Defined in: src/cli-sdk/src/config/index.ts:67
StringListKeys<O>
type StringListKeys<O> = { [k in keyof O]: O[k] extends string[] | undefined ? k : never };Defined in: src/cli-sdk/src/config/index.ts:285
Type Parameters
| Type Parameter |
|---|
O |
Variables
kCustomInspect
const kCustomInspect: typeof kCustomInspect;Defined in: src/cli-sdk/src/config/index.ts:64
Functions
assertRegistryKeys()
function assertRegistryKeys(registries, file): voidDefined in: src/cli-sdk/src/config/index.ts:107
registries alias names are used as spec prefixes, where ~ is
reserved, and an empty name has nothing to prefix with.
Parameters
| Parameter | Type |
|---|---|
registries | unknown |
file | string |
Returns
void
configWriteTarget()
function configWriteTarget(conf, fallback): WhichConfigDefined in: src/cli-sdk/src/config/index.ts:982
Which vlt.json a command that persists settings should write to.
--config=user and --config=project are explicit. Anything else means
the caller's own default, since --config also takes all (its default,
meaningful only for vlt config reads).
Parameters
| Parameter | Type |
|---|---|
conf | Pick<ParsedConfig, "get"> |
fallback | WhichConfig |
Returns
pairsToRecords()
function pairsToRecords(obj): PairsAsRecordsDefined in: src/cli-sdk/src/config/index.ts:127
Parameters
| Parameter | Type |
|---|---|
obj | | OptionsResults<…> | NonNullable<ConfigFileData> |
Returns
recordsToPairs()
function recordsToPairs(obj): RecordPairsDefined in: src/cli-sdk/src/config/index.ts:148
Parameters
| Parameter | Type |
|---|---|
obj | RecordPairs |
Returns
References
commands
Re-exports commands
Commands
Re-exports Commands
definition
Re-exports definition
isRecordField
Re-exports isRecordField
recordFields
Re-exports recordFields