Dependencies

The LPM.dev Registry stores package metadata, applies rules for public distribution, and authorizes each package download. It does not resolve your dependency graph: the LPM CLI resolves JavaScript dependencies, while Swift Package Manager resolves Swift dependencies.

JavaScript dependency metadata

The LPM.dev Registry currently handles these package.json fields:

FieldStoredPurpose
dependenciesYesRuntime dependencies
devDependenciesYesDevelopment-only dependencies
peerDependenciesYesDependencies supplied by the consuming project
bundleDependencies / bundledDependenciesYesPackage names declared as bundled; both aliases and the array or boolean form are accepted
optionalDependenciesNoOptional metadata is not currently preserved
peerDependenciesMetaNoPeer optionality and related metadata are not currently preserved

The LPM CLI supports optional dependency semantics when a registry exposes that metadata. Packages published to the LPM.dev Registry cannot currently rely on optionalDependencies or peerDependenciesMeta being returned in registry metadata.

For installation behavior, version selection, peer dependencies, and lockfiles, see the LPM CLI install reference and Resolver.

Public-distribution rules

Pool and Marketplace publication adds rules for direct dependencies hosted by the LPM.dev Registry:

Direct dependencyMarketplace releasePool release
Canonical @lpm.dev/owner.package name missing from the RegistryBlockedBlocked
Private LPM.dev Registry package in any inspected fieldBlockedBlocked
Pool package in any inspected fieldAllowedAllowed
Unbundled Marketplace package in dependenciesBlocked; use a peer for separate purchase or a verified bundleBlocked
Unbundled Marketplace package in peerDependenciesAllowed without a publisher Commercial License; each consumer needs separate accessBlocked
Unbundled Marketplace package in devDependenciesCross-owner use requires a publisher Commercial License; same-owner use is allowedBlocked
Verified Marketplace bundle from another ownerRequires a publisher Commercial LicenseBlocked
Verified Marketplace bundle from the same ownerAllowed without a self-purchaseBlocked
Public package from npm or another registryOutside LPM.dev Registry entitlement rulesOutside LPM.dev Registry entitlement rules

A verified bundle takes precedence when the same package also appears in a dependency field. Without a bundle, duplicate declarations use deterministic precedence: dependencies, then peerDependencies, then devDependencies. The Registry verifies declared LPM.dev bundles against the uploaded archive rather than trusting manifest metadata alone: it parses each bounded nested package.json at the expected package path and requires its name to match the bundle declaration exactly.

These checks govern whether a package can be distributed through Pool or Marketplace. They are separate from dependency resolution and installation.

Private parent packages are not subject to these public-distribution dependency gates.

Each archive requires access

Access to a parent package does not grant access to its dependencies. When installation selects an archive hosted by the LPM.dev Registry, the Registry authorizes that package and version independently.

For example, access to a Marketplace package does not automatically grant access to an unbundled Marketplace peer. The consumer must also have the entitlement required for that dependency. Bundled code is delivered inside the parent archive instead; it does not grant the consumer a separate entitlement to the bundled package.

Swift dependencies

Swift dependencies are declared in Package.swift and resolved by Swift Package Manager. Every selected archive hosted by the LPM.dev Registry still receives its own entitlement check when downloaded.

The JavaScript public-distribution checks above are based on stored package.json fields; they should not be read as automated validation of a Swift manifest's dependency graph. See Swift Package Registry for publishing and installation details.