Configuration
The CLI supports a configuration file for persistent settings. Use patchpulse.json in your project root going forward. These filenames are supported:
patchpulse.jsonpatchpulse.config.json.patchpulserc.json.patchpulserc
Example
Section titled “Example”{ "skip": ["lodash", "@types/*", "test-*"], "ignorePaths": ["packages/cli/e2e"], "packageManager": "pnpm", "interactive": true, "ignorePeerDeps": true, "minimumReleaseAge": 1440, "minimumReleaseAgeExclude": ["@myorg/*"]}Options
Section titled “Options”An array of package names or glob patterns to exclude from version checks.
{ "skip": ["lodash", "@types/*", "test-*", "*-dev"]}Supported pattern syntax:
| Pattern | Matches |
|---|---|
"lodash" |
Exact package name |
"@types/*" |
Any package under the @types scope |
"test-*" |
Any package starting with test- |
"*-dev" |
Any package ending with -dev |
ignorePaths
Section titled “ignorePaths”An array of directory or file paths to exclude from workspace scanning. Useful for ignoring fixture directories or generated packages.
{ "ignorePaths": ["packages/cli/e2e", "**/fixtures", "packages/*/dist"]}Both exact paths and glob patterns are supported.
includePaths
Section titled “includePaths”An array of paths to force-include in the workspace scan, even if they would otherwise be excluded (e.g. by .gitignore). ignorePaths still takes priority.
{ "includePaths": ["tools/internal-package"]}packageManager
Section titled “packageManager”Override the auto-detected package manager. Accepted values: npm, pnpm, yarn, bun.
{ "packageManager": "pnpm"}interactive
Section titled “interactive”Enable the interactive update prompt automatically after every run.
{ "interactive": true}ignorePeerDeps
Section titled “ignorePeerDeps”Exclude peerDependencies from the scan entirely. Useful for published libraries where peer dep ranges are intentionally broad and not something you manage directly.
{ "ignorePeerDeps": true}Can also be set via the --no-peer-deps CLI flag.
minimumReleaseAge
Section titled “minimumReleaseAge”Minimum age, in minutes, a published version must reach before Patch Pulse reports it as an update. Versions younger than this are withheld: the package shows as up to date, with a note naming the newer version, and the interactive updater will not offer it.
{ "minimumReleaseAge": 1440}You usually do not need to set this. When it is absent, Patch Pulse mirrors the release age gate your package manager already enforces, so it never suggests a version that install would refuse:
| Package manager | Setting mirrored |
|---|---|
| pnpm | minimumReleaseAge in pnpm-workspace.yaml or minimum-release-age in .npmrc (minutes). pnpm 11 defaults to one day. |
| bun | [install] minimumReleaseAge in bunfig.toml (seconds) |
| npm | min-release-age in .npmrc (days) |
| yarn | npmMinimalAgeGate in .yarnrc.yml (minutes or durations such as 7d) |
Set it to 0 to turn the gate off even when your package manager has one. Can also be set via the --minimum-release-age CLI flag.
minimumReleaseAgeExclude
Section titled “minimumReleaseAgeExclude”Packages exempt from the release age gate. These are merged with your package manager’s own exclusion list (minimumReleaseAgeExclude, minimumReleaseAgeExcludes, or npmPreapprovedPackages).
{ "minimumReleaseAgeExclude": ["@myorg/*", "typescript", "webpack@5.102.1"]}Entries may be exact names, glob patterns, or name@version specifiers. Several versions can be listed with ||, for example webpack@4.47.0 || 5.102.1.
CLI vs file precedence
Section titled “CLI vs file precedence”CLI flags take precedence over file settings for most options. The skip array is an exception — values from both sources are merged.
# Overrides packageManager and interactive, but merges with file's skip listnpx patch-pulse --skip "react,react-dom" --package-manager npm --no-interactive