NPM.License (NPM v0.6.0)

Copy Markdown View Source

Scans and reports licenses across the dependency tree.

Reads license fields from package manifests to produce compliance reports and detect potential issues.

Summary

Functions

Checks entries against a list of allowed licenses. Returns packages that violate the policy.

Extracts the license from a package.json data map.

Groups license entries by license type.

Finds packages with non-permissive or unknown licenses.

Checks if a license is considered permissive.

Scans a node_modules directory for license information.

Returns a compliance summary.

Types

license_entry()

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

Functions

check_policy(entries, allowed)

@spec check_policy([license_entry()], [String.t()]) :: [license_entry()]

Checks entries against a list of allowed licenses. Returns packages that violate the policy.

extract(arg1)

@spec extract(map()) :: String.t() | nil

Extracts the license from a package.json data map.

Handles both string license and legacy licenses array.

group_by_license(entries)

@spec group_by_license([license_entry()]) :: %{
  required(String.t()) => [license_entry()]
}

Groups license entries by license type.

non_permissive(entries)

@spec non_permissive([license_entry()]) :: [license_entry()]

Finds packages with non-permissive or unknown licenses.

permissive?(license)

@spec permissive?(String.t() | nil) :: boolean()

Checks if a license is considered permissive.

scan(node_modules_dir)

@spec scan(String.t()) :: [license_entry()]

Scans a node_modules directory for license information.

summary(entries)

@spec summary([license_entry()]) :: %{
  total: non_neg_integer(),
  permissive: non_neg_integer(),
  non_permissive: non_neg_integer(),
  unknown: non_neg_integer(),
  unique_licenses: [String.t()]
}

Returns a compliance summary.