Skip to content
API Referencecli-sdkconfig

@vltpkg/cli-sdk/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:249

Class that handles configuration for vlt.

Call Config.load to get one of these.

Constructors

new Config()
new Config(jack, projectRoot): Config

Defined in: src/cli-sdk/src/config/index.ts:380

Parameters
jack

Jack<object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object> = definition

projectRoot

string = ...

Returns

Config

Properties

command?
optional command:
| "registry"
| "cache"
| "config"
| "access"
| "bugs"
| "build"
| "ci"
| "create"
| "deprecate"
| "dist-tag"
| "docs"
| "exec"
| "exec-local"
| "help"
| "init"
| "install"
| "login"
| "logout"
| "list"
| "pack"
| "ping"
| "pkg"
| "profile"
| "publish"
| "query"
| "repo"
| "run-exec"
| "run"
| "setup"
| "token"
| "uninstall"
| "unpublish"
| "update"
| "exec-cache"
| "version"
| "view"
| "whoami";

Defined in: src/cli-sdk/src/config/index.ts:378

Which command name to use for overriding with command-specific values, determined from the argv when parse() is called.

commands
commands: object

Defined in: src/cli-sdk/src/config/index.ts:372

Record<alias, canonical name> to dereference command aliases.

?
readonly ?: "help" = 'help';
access
readonly access: "access" = 'access';
add
readonly add: "install" = 'install';
b
readonly b: "build" = 'build';
bugs
readonly bugs: "bugs" = 'bugs';
build
readonly build: "build" = 'build';
cache
readonly cache: "cache" = 'cache';
ci
readonly ci: "ci" = 'ci';
config
readonly config: "config" = 'config';
create
readonly create: "create" = 'create';
deprecate
readonly deprecate: "deprecate" = 'deprecate';
dist-tag
readonly dist-tag: "dist-tag" = 'dist-tag';
docs
readonly docs: "docs" = 'docs';
exec
readonly exec: "exec" = 'exec';
exec-cache
readonly exec-cache: "exec-cache" = 'exec-cache';
exec-local
readonly exec-local: "exec-local" = 'exec-local';
h
readonly h: "help" = 'help';
help
readonly help: "help" = 'help';
i
readonly i: "install" = 'install';
info
readonly info: "view" = 'view';
init
readonly init: "init" = 'init';
install
readonly install: "install" = 'install';
list
readonly list: "list" = 'list';
login
readonly login: "login" = 'login';
logout
readonly logout: "logout" = 'logout';
ls
readonly ls: "list" = 'list';
p
readonly p: "pkg" = 'pkg';
pack
readonly pack: "pack" = 'pack';
ping
readonly ping: "ping" = 'ping';
pkg
readonly pkg: "pkg" = 'pkg';
profile
readonly profile: "profile" = 'profile';
pub
readonly pub: "publish" = 'publish';
publish
readonly publish: "publish" = 'publish';
q
readonly q: "query" = 'query';
query
readonly query: "query" = 'query';
r
readonly r: "run" = 'run';
registry
readonly registry: "registry" = 'registry';
repo
readonly repo: "repo" = 'repo';
rm
readonly rm: "uninstall" = 'uninstall';
run
readonly run: "run" = 'run';
run-exec
readonly run-exec: "run-exec" = 'run-exec';
run-script
readonly run-script: "run" = 'run';
rx
readonly rx: "run-exec" = 'run-exec';
setup
readonly setup: "setup" = 'setup';
show
readonly show: "view" = 'view';
token
readonly token: "token" = 'token';
u
readonly u: "update" = 'update';
uninstall
readonly uninstall: "uninstall" = 'uninstall';
unpublish
readonly unpublish: "unpublish" = 'unpublish';
update
readonly update: "update" = 'update';
version
readonly version: "version" = 'version';
view
readonly view: "view" = 'view';
whoami
readonly whoami: "whoami" = 'whoami';
x
readonly x: "exec" = 'exec';
xc
readonly xc: "exec-cache" = 'exec-cache';
xl
readonly xl: "exec-local" = 'exec-local';
commandValues
commandValues: object = {}

Defined in: src/cli-sdk/src/config/index.ts:264

Command-specific config values

access?
optional access: ConfigData;
bugs?
optional bugs: ConfigData;
build?
optional build: ConfigData;
cache?
optional cache: ConfigData;
ci?
optional ci: ConfigData;
config?
optional config: ConfigData;
create?
optional create: ConfigData;
deprecate?
optional deprecate: ConfigData;
dist-tag?
optional dist-tag: ConfigData;
docs?
optional docs: ConfigData;
exec?
optional exec: ConfigData;
exec-cache?
optional exec-cache: ConfigData;
exec-local?
optional exec-local: ConfigData;
help?
optional help: ConfigData;
init?
optional init: ConfigData;
install?
optional install: ConfigData;
list?
optional list: ConfigData;
login?
optional login: ConfigData;
logout?
optional logout: ConfigData;
pack?
optional pack: ConfigData;
ping?
optional ping: ConfigData;
pkg?
optional pkg: ConfigData;
profile?
optional profile: ConfigData;
publish?
optional publish: ConfigData;
query?
optional query: ConfigData;
registry?
optional registry: ConfigData;
repo?
optional repo: ConfigData;
run?
optional run: ConfigData;
run-exec?
optional run-exec: ConfigData;
setup?
optional setup: ConfigData;
token?
optional token: ConfigData;
uninstall?
optional uninstall: ConfigData;
unpublish?
optional unpublish: ConfigData;
update?
optional update: ConfigData;
version?
optional version: ConfigData;
view?
optional view: ConfigData;
whoami?
optional whoami: ConfigData;
jack
jack: Jack<
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object &
object
>

Defined in: src/cli-sdk/src/config/index.ts:254

The JackSpeak object representing vlt’s configuration

positionals?
optional positionals: string[];

Defined in: src/cli-sdk/src/config/index.ts:351

positional arguments to the vlt process

projectRoot
projectRoot: string

Defined in: src/cli-sdk/src/config/index.ts:367

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?
optional values: OptionsResults<object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object>;

Defined in: src/cli-sdk/src/config/index.ts:259

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:575

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(): ConfigOptions

Defined in: src/cli-sdk/src/config/index.ts:271

A flattened object of the parsed configuration

Returns

ConfigOptions

Methods

addConfigToFile()
addConfigToFile(
this,
which,
values): Promise<void>

Defined in: src/cli-sdk/src/config/index.ts:493

Fold in the provided fields with the existing properties in the config file.

Parameters
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:636

Deletes the specified config fields from the named file Returns true if anything was changed.

Parameters
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:689

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
this

ParsedConfig

which

WhichConfig

edit

(file) => void | Promise<void>

Returns

Promise<void>

get()
get<K>(k): OptionsResults<object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object>[K]

Defined in: src/cli-sdk/src/config/index.ts:470

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

K extends | "registry" | "workspace" | "cache" | "config" | "access" | "help" | "version" | "view" | "git-hosts" | "registries" | "git-host-archives" | "scoped-registries" | "jsr-registries" | "color" | "no-color" | "default-registry-alias" | "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-group" | "scope" | "target" | "if-present" | "recursive" | "bail" | "no-bail" | "all" | "editor" | "script-shell" | "fallback-command" | "package" | "call" | "loglevel" | "verbose" | "dashboard-root" | "save-dev" | "save-exact" | "save-optional" | "save-peer" | "save-prod" | "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
k

K

Returns

OptionsResults<object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object>[K]

getRecord()
getRecord(k): RecordString

Defined in: src/cli-sdk/src/config/index.ts:446

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
k

"workspace" | "git-hosts" | "registries" | "git-host-archives" | "scoped-registries" | "jsr-registries" | "workspace-group" | "dashboard-root"

Returns

RecordString

loadConfigFile()
loadConfigFile(): Promise<Config>

Defined in: src/cli-sdk/src/config/index.ts:731

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 & object

Defined in: src/cli-sdk/src/config/index.ts:392

Parse the arguments and set configuration and positionals accordingly.

Parameters
args

string[] = process.argv

Returns

Config & object

reloadFromDisk()
reloadFromDisk(): Promise<void>

Defined in: src/cli-sdk/src/config/index.ts:752

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): void

Defined in: src/cli-sdk/src/config/index.ts:339

Reset the options value, optionally setting a new project root to recalculate the options.

Parameters
projectRoot

string = ...

Returns

void

writeConfigFile()
writeConfigFile(
this,
which,
values): Promise<void>

Defined in: src/cli-sdk/src/config/index.ts:480

Write the config values to the user or project config file.

Parameters
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:786

Load the configuration and return a Promise to a Config object

Parameters
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:189

Config data can be any options, and also a ‘command’ field which contains command names and override options for that command.

Type declaration

command?
optional 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:179


ConfigDefinitions

type ConfigDefinitions = Unwrap<typeof definition>

Defined in: src/cli-sdk/src/config/index.ts:234

The base config definition set as a type


ConfigFileData

type ConfigFileData = ConfigFileDataNoCommand & object

Defined in: src/cli-sdk/src/config/index.ts:207

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

command?
optional 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:195


ConfigFileLayer

type ConfigFileLayer = Partial<PairsAsRecords>

Defined in: src/cli-sdk/src/config/index.ts:98

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:222

Type declaration

monorepo?
optional monorepo: Monorepo;
packageInfo
packageInfo: PackageInfoClient
packageJson
packageJson: PackageJson
projectRoot
projectRoot: string
scurry
scurry: PathScurry

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:213


LoadedConfig

type LoadedConfig = ParsedConfig

Defined in: src/cli-sdk/src/config/index.ts:815

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:239

Type Parameters

O


PairsAsRecords

type PairsAsRecords = ConfigOptionsNoExtras & object

Defined in: src/cli-sdk/src/config/index.ts:88

Type declaration

command?
optional command: { [k in keyof Commands]?: ConfigOptionsNoExtras };

ParsedConfig

type ParsedConfig = Config & object

Defined in: src/cli-sdk/src/config/index.ts:806

Type declaration

command
command: NonNullable<Config['command']>
positionals
positionals: string[];
values
values: OptionsResults<ConfigDefinitions>

RecordPairs

type RecordPairs = Record<string, unknown>

Defined in: src/cli-sdk/src/config/index.ts:63


RecordString

type RecordString = Record<string, string>

Defined in: src/cli-sdk/src/config/index.ts:64


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:236

Type Parameters

O

Variables

kCustomInspect

const kCustomInspect: typeof kCustomInspect

Defined in: src/cli-sdk/src/config/index.ts:61

Functions

configWriteTarget()

function configWriteTarget(conf, fallback): WhichConfig

Defined in: src/cli-sdk/src/config/index.ts:824

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

conf

Pick<ParsedConfig, "get">

fallback

WhichConfig

Returns

WhichConfig


pairsToRecords()

function pairsToRecords(obj): PairsAsRecords

Defined in: src/cli-sdk/src/config/index.ts:120

Parameters

obj

OptionsResults<object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object & object> | NonNullable<ConfigFileData>

Returns

PairsAsRecords


recordsToPairs()

function recordsToPairs(obj): RecordPairs

Defined in: src/cli-sdk/src/config/index.ts:141

Parameters

obj

RecordPairs

Returns

RecordPairs

References

commands

Re-exports commands

Commands

Re-exports Commands

definition

Re-exports definition

isRecordField

Re-exports isRecordField

recordFields

Re-exports recordFields