NPM.Overrides (NPM v0.6.0)

Copy Markdown View Source

Handles npm overrides for forcing specific package versions.

npm overrides allow replacing versions of transitive dependencies, useful for security patches and compatibility fixes.

Summary

Functions

Applies overrides to a lockfile, replacing matched versions.

Formats an override for display.

Finds which overrides would affect the current lockfile.

Parses overrides from package.json data.

Validates overrides — checks if specified versions are valid semver.

Types

override()

@type override() :: %{
  package: String.t(),
  version: String.t(),
  parent: String.t() | nil
}

Functions

apply_overrides(lockfile, overrides)

@spec apply_overrides(map(), [override()]) :: {map(), [map()]}

Applies overrides to a lockfile, replacing matched versions.

Returns the modified lockfile and a list of applied overrides.

format_override(o)

@spec format_override(override()) :: String.t()

Formats an override for display.

matching(lockfile, overrides)

@spec matching(map(), [override()]) :: [override()]

Finds which overrides would affect the current lockfile.

parse(arg1)

@spec parse(map()) :: [override()]

Parses overrides from package.json data.

Supports both flat overrides {"pkg": "version"} and nested overrides {"parent": {"pkg": "version"}}.

validate(overrides)

@spec validate([override()]) :: {:ok, [override()]} | {:error, [String.t()]}

Validates overrides — checks if specified versions are valid semver.