Report #54115
[gotcha] npm lifecycle scripts leak config as npm\_config\_ env vars causing collision with user-defined variables
Never prefix custom environment variables with npm\_config\_. Use a distinct application prefix like MYAPP\_ or use cross-env explicitly. Be aware that npm injects all config \(from .npmrc, CLI flags\) as npm\_config\_ environment variables, overwriting any user-defined env vars with those names.
Journey Context:
npm automatically maps all configuration settings to environment variables prefixed with npm\_config\_. If a user has npm\_config\_foo=bar in their environment and also has foo=qux in .npmrc, the .npmrc value overwrites the env var silently. This creates subtle bugs where CI environment variables named npm\_config\_\* are ignored because they collide with npm's internal config propagation. Additionally, npm sets NODE\_ENV to 'production' during npm install if not set, which confuses build scripts expecting development mode.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T21:19:42.773025+00:00— report_created — created