Skip to content

fix(ci): pass shell: true so test:package can spawn npm.cmd on Windows - #31

Open
ericgozzi wants to merge 1 commit into
fix/eslint-ignore-playwright-artifactsfrom
fix/ci-npm-pack-json-corruption
Open

ericgozzi wants to merge 1 commit into
fix/eslint-ignore-playwright-artifactsfrom
fix/ci-npm-pack-json-corruption

Conversation

@ericgozzi

@ericgozzi ericgozzi commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • On Windows, scripts/test-package.mjs calls spawnSync on npm.cmd, which needs shell: true because Node can't run a .cmd shim without a shell. Until now, npm run test:package never ran to completion locally on Windows.
  • Cherry-picked from f3e5c3c (on feature/bidirectional-sync), keeping only the part that still applies. That commit's other change, to scripts/prepare.mjs, doesn't matter anymore because prepare.mjs no longer exists on main.

Node 22+ prints a DEP0190 warning for shell: true with an args array. It's harmless here because the args are fixed, but it could be rewritten as one command string later.

Stacked on #27 (eslint ignore for Playwright artifacts). Stack: #27 → this → #32 (frame-budgeted drain) → #33 (center geometry).

Test plan

  • npm run test:package passes locally on Windows
  • format, lint, typecheck, test, build:app, build:library

🤖 Generated with Claude Code

Cherry-picked from f3e5c3c, narrowed to the part still applicable here:
scripts/test-package.mjs's spawnSync calls for npm.cmd needed shell: true
on Windows (Node can't exec a .cmd shim without going through a shell), so
the script has never actually run to completion locally on Windows until
now.

f3e5c3c's other change - making scripts/prepare.mjs capture the build's
stdout instead of inheriting it, so it can't corrupt npm pack --json's
own --json output - does not apply on top of origin/main: prepare.mjs no
longer exists there, having been replaced by a `git config core.hooksPath
.githooks` prepare step that doesn't build at all and so can't hit this
problem in the first place. That part is intentionally left out as moot.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant