vlt / docs

  • PricingBenchmarks (opens in new window)Community (opens in new window)Feedback
  • Overview
  • Files
  • API
  • Loading
  • Saving
  • Lockfile Format
  • Options
  1. Client
  2. /
  3. API Reference
  4. /
  5. _media
  6. /
  7. @vltpkg/graph.lockfile

@vltpkg/graph.lockfile

@vltpkg/graph.lockfile

Serialize and deserialize @vltpkg/graph.Graph to/from lockfiles.

Files

  • vlt-lock.json — Main lockfile (committed to source control)
  • node_modules/.vlt-lock.json — Hidden lockfile with manifests and build state (performance cache)

API

Loading

TypeScript
import { lockfile } from '@vltpkg/graph'
import { PackageJson } from '@vltpkg/package-json'

const packageJson = new PackageJson()
const mainManifest = packageJson.read(projectRoot)

// Load from vlt-lock.json
const graph = lockfile.load({
  projectRoot,
  mainManifest,
  packageJson,
})

// Load from node_modules/.vlt-lock.json (faster, has manifests)
const graph = lockfile.loadHidden({
  projectRoot,
  mainManifest,
  packageJson,
})

// Load from in-memory data
const graph = lockfile.loadObject(
  { projectRoot, mainManifest },
  lockfileData,
)

Saving

TypeScript
import { lockfile } from '@vltpkg/graph'

// Save to vlt-lock.json (no manifests, compact format)
lockfile.save({ graph, modifiers })

// Save to node_modules/.vlt-lock.json (includes manifests + build state)
lockfile.saveHidden({ graph, modifiers })

// Get lockfile data without writing
const data = lockfile.lockfileData({ graph, saveManifests: true })

Lockfile Format

TypeScript
type LockfileData = {
  lockfileVersion: number
  options: SpecOptions & { modifiers?: Record<string, string> }
  nodes: Record<DepID, LockfileNode>
  edges: LockfileEdges
}

// Node: [flags, name?, integrity?, resolved?, location?, manifest?, rawManifest?, platform?, bins?, buildState?]
// Edge key: "${fromId} ${specName}" → value: "${type} ${bareSpec} ${toId|MISSING}"

Options

OptionDescription
projectRootProject root directory
mainManifestRoot package.json contents
packageJsonShared PackageJson instance
monorepoShared Monorepo instance
scurryShared PathScurry instance
modifiersGraphModifier instance
actualActual graph to hydrate data from

On this page

  • Files
  • API
  • Loading
  • Saving
  • Lockfile Format
  • Options

Deploy your package on vlt.io

Publish scoped and private packages, manage organizations and access, and give every developer and CI environment a consistent source for public and private JavaScript dependencies.

Publish now