Principle:Mlc ai Web llm Dependency Version Pinning
| Knowledge Sources | |
|---|---|
| Domains | Build_System, Package_Management |
| Last Updated | 2026-02-14 22:30 GMT |
Overview
Technique for ensuring reproducible builds by recording exact dependency versions and integrity hashes in a lockfile that is committed to version control.
Description
Dependency version pinning solves the problem of non-deterministic builds caused by semver range resolution. When package.json declares a dependency like "loglevel": "^1.9.1", different environments may resolve this to different patch versions depending on when npm install runs. The lockfile eliminates this ambiguity by recording the exact resolved version for every dependency in the tree.
Key properties of lockfile-based pinning:
- Determinism -- Every
npm ciinvocation produces an identicalnode_modules/tree - Integrity -- SHA-512 hashes verify that downloaded packages have not been tampered with
- Transitivity -- Pins not just direct dependencies but the entire transitive dependency graph
- Auditability -- The full dependency tree is inspectable for security vulnerabilities
Usage
Use dependency version pinning for any project where build reproducibility matters. This is especially critical for:
- CI/CD pipelines -- Ensures builds are identical regardless of when they run
- Security-sensitive projects -- Integrity hashes detect supply chain tampering
- Team development -- All developers work with identical dependency versions
- Production deployments -- The exact tested dependency set is deployed
Theoretical Basis
Lockfile Resolution Algorithm
Pseudo-code logic:
# Abstract lockfile resolution process
for each dependency in package.json:
resolve semver range to exact version (e.g., "^1.9.1" → "1.9.2")
compute SHA-512 integrity hash of package tarball
record (name, version, integrity, resolved_url) in lockfile
recursively resolve transitive dependencies
npm ci vs npm install
| Command | Behavior | Use Case |
|---|---|---|
npm install |
Resolves from package.json, may update lockfile | Development: adding/updating dependencies |
npm ci |
Installs strictly from lockfile, fails on mismatch | CI/CD: deterministic builds |
Lockfile Version 3
npm lockfile version 3 (used by web-llm) stores a flat packages map keyed by node_modules/ path. This format:
- Eliminates the nested
dependenciesstructure of earlier versions - Directly represents the physical layout of
node_modules/ - Supports workspaces and package aliases