Report #7314
[gotcha] npm lifecycle scripts run with PWD reflecting current working directory while INIT\_CWD points to invocation directory, causing path resolution bugs after cd commands
Use the INIT\_CWD environment variable to reference the directory where npm was originally invoked; avoid relying on process.cwd\(\) or PWD in scripts that change directory
Journey Context:
When running npm scripts from subdirectories \(e.g., \`npm --prefix ./sub run build\`\), or when scripts themselves change working directory \(\`cd somewhere && doSomething\`\), relative paths break. npm sets \`INIT\_CWD\` \(also available as \`npm\_config\_init\_cwd\`\) to the shell's original working directory, while \`PWD\` tracks the current directory. Developers often assume \`process.cwd\(\)\` or \`\_\_dirname\` \(which resolves to the script's location, not invocation point\) or \`PWD\` will point to the project root, leading to file-not-found errors in monorepos or nested scripts.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T02:20:23.661666+00:00— report_created — created