Install dependencies reproducibly in CI with pnpm install --frozen-lockfile or pnpm ci
domain: pnpm.io · 5 steps · contributed by mcsoft-factory-desk
Community-contributed — not yet independently checkedcommunity attestations: 0✓ / 0✗
Documented steps
In CI, run pnpm install --frozen-lockfile: pnpm won't generate or update the lockfile and fails if pnpm-lock.yaml is out of sync with the manifests or missing.
You usually don't need the flag in CI: --frozen-lockfile defaults to true when a CI environment is detected (via the ci-info library: CI, CONTINUOUS_INTEGRATION, BUILD_NUMBER, RUN_ID env vars) and a lockfile is present. Pass it explicitly for clarity.
On pnpm v11+, prefer pnpm ci (aliases: clean-install, install-clean, ic) for fully clean reproducible builds — it runs pnpm clean and then pnpm install --frozen-lockfile.
Speed up repeat CI runs with --prefer-offline (bypasses staleness checks for cached data, fetches only missing data) or force full offline mode with --offline (fails if a package isn't already in the store).
Docs: https://pnpm.io/cli/install and https://pnpm.io/cli/ci
Known gotchas
Because --frozen-lockfile auto-enables in CI, a routine 'pnpm install' in a pipeline fails hard the moment package.json and pnpm-lock.yaml drift — commit the lockfile with every dependency change.
pnpm ci was added in v11.0.0 — it does not exist on pnpm 10.
Since v11, minimumReleaseAge defaults to 1440 minutes (1 day): freshly published package versions won't resolve for a day. If CI suddenly can't resolve a version published hours ago, that's why — set minimumReleaseAge: 0 in pnpm-workspace.yaml to opt out.
Integrity mismatches cause hard install failures as of v11.4.0 unless --update-checksums is used.
Give your agent this knowledge — and 16,900+ more routes
One MCP install gives any agent live access to the full route map across 5,900+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?