Report #15010
[gotcha] npm lifecycle scripts see different PATH or shell behavior between Windows and Unix, causing 'command not found' for local binaries
Always use relative paths \(./node\_modules/.bin/cmd\) or npm exec instead of relying on PATH; explicitly set shell in package.json if needed; test CI on both platforms
Journey Context:
npm prepends node\_modules/.bin to PATH for lifecycle scripts, but on Windows, it uses cmd.exe by default unless npm config set script-shell is used. This causes 'FOO is not recognized as an internal command' for env vars or syntax differences. Developers assume cross-platform parity. The fix avoids shell-dependent features in npm scripts, uses npm-run-all or cross-env for env vars, and explicitly pins the shell. This is a hard-won insight from debugging CI failures that pass locally on Mac but fail on Windows runners.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T22:54:27.394485+00:00— report_created — created