Skip to content
GitHubStar1

Configuration

The CLI supports a configuration file for persistent settings. Use patchpulse.json in your project root going forward. These filenames are supported:

  • patchpulse.json
  • patchpulse.config.json
  • .patchpulserc.json
  • .patchpulserc
{
"skip": ["lodash", "@types/*", "test-*"],
"ignorePaths": ["packages/cli/e2e"],
"packageManager": "pnpm",
"interactive": true,
"ignorePeerDeps": true,
"minimumReleaseAge": 1440,
"minimumReleaseAgeExclude": ["@myorg/*"]
}

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

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.


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"]
}

Override the auto-detected package manager. Accepted values: npm, pnpm, yarn, bun.

{
"packageManager": "pnpm"
}

Enable the interactive update prompt automatically after every run.

{
"interactive": true
}

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.


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.


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 flags take precedence over file settings for most options. The skip array is an exception — values from both sources are merged.

Terminal window
# Overrides packageManager and interactive, but merges with file's skip list
npx patch-pulse --skip "react,react-dom" --package-manager npm --no-interactive