Skip to content

Commit addee0f

Browse files
Copiloticlanton
andcommitted
fix: convert NPM_CONFIG env vars to CLI args in rush-pnpm to prevent npm warnings
In RushPnpmCommandLineParser._executeAsync(), replace NPM_CONFIG_* environment variables (STORE_DIR, CACHE_DIR, STATE_DIR, WORKSPACE_DIR) with pnpm CLI arguments (--store-dir, --config.cacheDir, --config.stateDir, --config.workspaceDir). This prevents these pnpm-specific configuration values from leaking to npm when pnpm internally delegates to npm libraries (e.g. during publish operations), which caused "Unknown env config" warnings. This approach is consistent with how BaseInstallManager already passes these values via CLI args during rush install/update. Fixes #5704 Co-authored-by: iclanton <5010588+iclanton@users.noreply.github.com> Agent-Logs-Url: https://github.com/microsoft/rushstack/sessions/c306dd18-490c-4a52-a3ca-3447740f7280
1 parent c1dc426 commit addee0f

2 files changed

Lines changed: 19 additions & 5 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@microsoft/rush",
5+
"comment": "Fix \"Unknown env config\" warnings from npm during rush-pnpm operations (e.g. publish) by passing pnpm configuration via CLI args instead of NPM_CONFIG_* environment variables.",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@microsoft/rush"
10+
}

libraries/rush-lib/src/cli/RushPnpmCommandLineParser.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -432,12 +432,16 @@ export class RushPnpmCommandLineParser {
432432
const rushConfiguration: RushConfiguration = this._rushConfiguration;
433433
const workspaceFolder: string = this._subspace.getSubspaceTempFolderPath();
434434
const pnpmEnvironmentMap: EnvironmentMap = new EnvironmentMap(process.env);
435-
pnpmEnvironmentMap.set('NPM_CONFIG_WORKSPACE_DIR', workspaceFolder);
435+
436+
// Pass pnpm configuration as CLI args rather than NPM_CONFIG_* environment variables.
437+
// Using env vars like NPM_CONFIG_STORE_DIR would cause "Unknown env config" warnings
438+
// when pnpm internally delegates to npm (e.g. during publish operations).
439+
const pnpmConfigArgs: string[] = [`--config.workspaceDir=${workspaceFolder}`];
436440

437441
if (rushConfiguration.pnpmOptions.pnpmStorePath) {
438-
pnpmEnvironmentMap.set('NPM_CONFIG_STORE_DIR', rushConfiguration.pnpmOptions.pnpmStorePath);
439-
pnpmEnvironmentMap.set('NPM_CONFIG_CACHE_DIR', rushConfiguration.pnpmOptions.pnpmStorePath);
440-
pnpmEnvironmentMap.set('NPM_CONFIG_STATE_DIR', rushConfiguration.pnpmOptions.pnpmStorePath);
442+
pnpmConfigArgs.push(`--store-dir=${rushConfiguration.pnpmOptions.pnpmStorePath}`);
443+
pnpmConfigArgs.push(`--config.cacheDir=${rushConfiguration.pnpmOptions.pnpmStorePath}`);
444+
pnpmConfigArgs.push(`--config.stateDir=${rushConfiguration.pnpmOptions.pnpmStorePath}`);
441445
}
442446

443447
if (rushConfiguration.pnpmOptions.environmentVariables) {
@@ -473,7 +477,7 @@ export class RushPnpmCommandLineParser {
473477
try {
474478
const { exitCode } = await Utilities.executeCommandAsync({
475479
command: rushConfiguration.packageManagerToolFilename,
476-
args: this._pnpmArgs,
480+
args: [...pnpmConfigArgs, ...this._pnpmArgs],
477481
workingDirectory: process.cwd(),
478482
environment: pnpmEnvironmentMap.toObject(),
479483
keepEnvironment: true,

0 commit comments

Comments
 (0)