From f2a3409f9744336339c4fb3f19cda804e7514035 Mon Sep 17 00:00:00 2001
From: Alan Agius <alan.agius4@gmail.com>
Date: Fri, 23 Jul 2021 06:32:17 +0200
Subject: [PATCH] fix(@angular/cli): merge npmrc files values

Closes #21406
---
 packages/angular/cli/utilities/package-metadata.ts | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/packages/angular/cli/utilities/package-metadata.ts b/packages/angular/cli/utilities/package-metadata.ts
index 4b709e21e634..eb658f632c7d 100644
--- a/packages/angular/cli/utilities/package-metadata.ts
+++ b/packages/angular/cli/utilities/package-metadata.ts
@@ -143,7 +143,7 @@ function readOptions(
       // See: https://github.com/npm/npm-registry-fetch/blob/ebddbe78a5f67118c1f7af2e02c8a22bcaf9e850/index.js#L99-L126
       const rcConfig: PackageManagerOptions = yarn ? lockfile.parse(data) : ini.parse(data);
 
-      rcOptions = normalizeOptions(rcConfig, location);
+      rcOptions = normalizeOptions(rcConfig, location, rcOptions);
     }
   }
 
@@ -166,17 +166,15 @@ function readOptions(
     envVariablesOptions[normalizedName] = value;
   }
 
-  return {
-    ...rcOptions,
-    ...normalizeOptions(envVariablesOptions),
-  };
+  return normalizeOptions(envVariablesOptions, undefined, rcOptions);
 }
 
 function normalizeOptions(
   rawOptions: PackageManagerOptions,
   location = process.cwd(),
+  existingNormalizedOptions: PackageManagerOptions = {},
 ): PackageManagerOptions {
-  const options: PackageManagerOptions = {};
+  const options = { ...existingNormalizedOptions };
 
   for (const [key, value] of Object.entries(rawOptions)) {
     let substitutedValue = value;