Skip to content

chore: remove yargs override in root package.json once all sub-packages are updated #9130

Description

@bshaffer

Background

In Node.js >= 24, certain older versions of yargs (used transitively across packages in the monorepo) cause runtime failures related to ES module scope and require resolution. To temporarily prevent ESM-scope/require-compat crashes in Node 24+ environments during CI test runs and installations, we introduced a hook in .pnpmfile.cjs (via #8460) that dynamically mutates any direct or indirect dependency on yargs to version 18.0.0 when the Node.js version is >= 24.

Why this was needed

  • Some of our older package dependencies/tools pulled in outdated versions of yargs (such as yargs@16 or yargs@17).
  • Node.js >= 24 implements stricter constraints and changed behaviors regarding ESM resolution and require(esm) integration, triggering loader/scope compatibility failures with these older yargs releases.
  • Setting a global pnpm-file override was a safe, non-intrusive stopgap to stabilize the CI pipeline on newer Node.js versions without requiring a simultaneous, repo-wide upgrade of all individual packages.

Impact of the PNPM Workspace PR (#8973)

In our upcoming transition to a PNPM workspace (currently in progress in PR #8973):

  • The programmatic .pnpmfile.cjs is deleted entirely.
  • Instead of using a custom JS script to mutate dependencies during installation, the monorepo leverages PNPM's native, declarative overrides feature in the root package.json ("pnpm": { "overrides": { "yargs": "^17.7.2" } }).
  • This means that once the PNPM workspace PR is merged, the code reviewer's commented line in .pnpmfile.cjs will be automatically cleaned up.
  • However, the global override mechanism itself will still exist in the root package.json "pnpm.overrides" field.

When & How to Fix

To completely remove the global override from the root package.json:

  1. Identify all packages/tools in the repository that still depend on versions of yargs older than 17.7.2 / 18.0.0.
  2. Upgrade yargs to a consistent, modern version (e.g. ^18.0.0 or newer) across all sub-projects and tools.
  3. Remove the "yargs" entry from "pnpm.overrides" in the root package.json.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions