Revert CI's npm install workaround back to npm ci once npm/cli#7622 ships · Issue #17 · monoes/mono-agent-src · GitHub
Skip to content

Revert CI's npm install workaround back to npm ci once npm/cli#7622 ships #17

Closed

Description

@nokhodian

Follow-up from 0cec298 (fix(ci): use npm install instead of npm ci to route around an upstream npm bug)

`.github/workflows/release.yml`'s four frontend-install steps (`test`, `build-macos-arm64`, `build-windows`, `build-linux`) use `npm install` instead of `npm ci`, specifically to route around a currently-open, unmerged upstream npm bug:

  • npm/cli#7622 — "npm ci erroneously installs optional OS-constrained transitive dependency through direct shrinkwrap dependency"
  • Fix PR: npm/cli#8310 — open, unmerged as of 2026-08-09

Symptom this repo hit: `npm ci` failed on the Linux CI runner with `EBADPLATFORM: Unsupported platform for @esbuild/netbsd-arm64@0.28.2` — caused by `vitest`'s optional peer dependency on `esbuild` (which ships ~30 platform-specific `optionalDependencies` of its own). Reproduced with lockfiles generated by both npm 11.17.0 and npm 10.8.2; did not reproduce locally on darwin/arm64 with either version — Linux-runner-specific.

Why `npm install` instead of a version bump: upgrading npm wouldn't have helped since the fix isn't released yet. `npm install` follows a different code path for resolving optional dependencies than `npm ci` and isn't subject to this specific bug.

What to do once this is fixed upstream

  1. Confirm fix(arborist): don't checkEngine/checkPlatform for extraneous deps npm/cli#8310 (or an equivalent fix) has shipped in a released npm version.
  2. Bump `actions/setup-node`'s `node-version` if needed to pick up a Node release bundling the fixed npm, or add an explicit `npm install -g npm@` step.
  3. Revert all four `npm install` → `npm ci` in `release.yml`, restoring the stricter lockfile-sync guarantee.
  4. Remove this issue.

Trade-off while this stays open

`npm install` won't fail loudly if `wails-app/frontend/package-lock.json` drifts out of sync with `package.json` — it'll just silently reconcile at install time in CI instead of hard-failing the way `npm ci` would. Not a correctness risk for the shipped app (the actual installed versions still satisfy `package.json`'s ranges either way), but it's a weaker drift-detection guarantee than before.

Activity

  1. nokhodian commented on Sep 1, 2026

    @nokhodian
    CollaboratorAuthor

    Fixed by commit b67c521 (branch issue-cleanup, will merge to master shortly).

    Confirmed npm/cli#7622 was fixed by npm/cli#9262, shipped in npm 12.0.0
    (2026-07-08). Bumped node-version 20 → 22 in the four frontend-install
    CI jobs (npm 12 requires Node >=22.22) and install npm@12 explicitly
    (Node 22's own bundled npm still predates it), then reverted npm ci --dry-run && npm install back to plain npm ci in both ci.yml and
    release.yml.

    Verified locally: npx --package npm@12 -- npm ci succeeds against
    wails-app/frontend's lockfile (previously reproduced EBADPLATFORM with
    the system npm 10.9.0); confirmed on CI too — the Wails GUI module job
    (which runs this exact npm install -g npm@12 && npm ci sequence) has
    been green throughout this session's CI runs.

  2. added a commit that references this issue on Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions