Skip to content

pacquet: installation settings not yet supported (parity with pnpm CLI) #12042

Description

@zkochan

Summary

Tracking issue for installation-related settings supported by the pnpm CLI that the Rust port (pacquet) does not yet support. This was produced by diffing pnpm's Config type (config/reader/src) against pacquet's config crate (pacquet/crates/config/src/lib.rs), its CLI args, and the rest of the workspace.

Scope is limited to pacquet's current command surface: install, add, update, remove. Settings that only affect publish/run/exec/dlx/audit are excluded.

Pacquet already covers a large surface (hoisting, nodeLinker, dedupe-*, peer resolution, store/virtual-store layout, minimumReleaseAge, trustPolicy, overrides, packageExtensions, patchedDependencies, allowBuilds, supportedArchitectures, fetchRetry*, catalog resolution, etc.). The gaps below are what remain.

Lockfile

  • lockfileOnly / --lockfile-only — resolve + write lockfile without linking (done in feat(pacquet): port lockfileOnly setting #12046)
  • lockfileDir — custom lockfile location
  • sharedWorkspaceLockfile — toggle for single root lockfile
  • useGitBranchLockfile, gitBranchLockfile, mergeGitBranchLockfiles, mergeGitBranchLockfilesBranchPattern — per-branch lockfiles
  • frozenLockfile as a config-file/env setting (currently only a CLI flag)

Resolution / versions

  • resolutionMode (highest / time-based / lowest-direct)
  • registrySupportsTimeField
  • allowedDeprecatedVersions
  • updateConfig.ignoreDependencies
  • peerDependencyRules (ignoreMissing, allowAny, allowedVersions)

Builds / scripts / hooks

  • ignoreScripts
  • enablePrePostScripts, scriptShell, syncInjectedDepsAfterScripts
  • onlyBuiltDependencies / onlyBuiltDependenciesFile / neverBuiltDependencies (currently silently ignored; pacquet uses allowBuilds/dangerouslyAllowAllBuilds instead)
  • strictDepBuilds
  • .pnpmfile.cjs hooks (pnpmfile, globalPnpmfile, enablePnpmfile, ignorePnpmfile) — pacquet does not run pnpmfiles yet

Patching

  • allowUnusedPatches (and allowNonAppliedPatches)
  • patchesDir

Store / modules

  • virtualStoreOnly
  • stateDir
  • strictStorePkgContentCheck
  • enableModulesDir
  • preferSymlinkedExecutables

Network (currently hardcoded defaults in pacquet, not configurable)

  • networkConcurrency, fetchingConcurrency, maxSockets
  • fetchTimeout, fetchWarnTimeoutMs, fetchMinSpeedKiBps
  • userAgent, npmrcAuthFile

Catalogs

  • catalogMode
  • cleanupUnusedCatalogs

Workspace

  • ignoreWorkspaceCycles / disallowWorkspaceCycles
  • includeWorkspaceRoot

Save behavior (add/update)

  • savePrefix
  • saveWorkspaceProtocol
  • savePeer
  • saveCatalogName

Manifest / engine

  • engineStrict, nodeVersion (engine-strict gating during install)
  • configDependencies

Notes

  • enablePnp is not a separate setting in either implementation — pnp is a nodeLinker value, which pacquet already accepts.
  • The network settings exist as internal constants in pacquet (e.g. default_network_concurrency()) but aren't user-configurable.
  • Some items (pnpmfile hooks, onlyBuiltDependencies) are already acknowledged as TODOs in pacquet's own source comments.

Written by an agent (Claude Code, claude-opus-4-8).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions