From 08de7aff5db9be2afa415724e4a0f6799ab8a048 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Thu, 4 Jun 2020 14:03:20 +0200
Subject: [PATCH] fix(npm): replace all instances of $NPM_TOKEN in npmrc
 (#6431)

---
 lib/config/decrypt.spec.ts | 5 +++--
 lib/config/decrypt.ts      | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/config/decrypt.spec.ts b/lib/config/decrypt.spec.ts
index fd521049c1..d3fe1a4f98 100644
--- a/lib/config/decrypt.spec.ts
+++ b/lib/config/decrypt.spec.ts
@@ -36,7 +36,8 @@ describe('config/decrypt', () => {
     });
     it('replaces npm token placeholder in npmrc', () => {
       config.privateKey = privateKey;
-      config.npmrc = '//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n'; // eslint-disable-line no-template-curly-in-string
+      config.npmrc =
+        '//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n'; // eslint-disable-line no-template-curly-in-string
       config.encrypted = {
         npmToken:
           'FLA9YHIzpE7YetAg/P0X46npGRCMqn7hgyzwX5ZQ9wYgu9BRRbTiBVsUIFTyM5BuP1Q22slT2GkWvFvum7GU236Y6QiT7Nr8SLvtsJn2XUuq8H7REFKzdy3+wqyyWbCErYTFyY1dcPM7Ht+CaGDWdd8u/FsoX7AdMRs/X1jNUo6iSmlUiyGlYDKF+QMnCJom1VPVgZXWsGKdjI2MLny991QMaiv0VajmFIh4ENv4CtXOl/1twvIl/6XTXAaqpJJKDTPZEuydi+PHDZmal2RAOfrkH4m0UURa7SlfpUlIg+EaqbNGp85hCYXLwRcEET1OnYr3rH1oYkcYJ40any1tvQ==',
@@ -45,7 +46,7 @@ describe('config/decrypt', () => {
       expect(res.encrypted).not.toBeDefined();
       expect(res.npmToken).not.toBeDefined();
       expect(res.npmrc).toEqual(
-        '//registry.npmjs.org/:_authToken=abcdef-ghijklm-nopqf-stuvwxyz\n'
+        '//registry.npmjs.org/:_authToken=abcdef-ghijklm-nopqf-stuvwxyz\n//registry.npmjs.org/:_authToken=abcdef-ghijklm-nopqf-stuvwxyz\n'
       );
     });
     it('appends npm token in npmrc', () => {
diff --git a/lib/config/decrypt.ts b/lib/config/decrypt.ts
index 7fa3a9c860..550af3e5ed 100644
--- a/lib/config/decrypt.ts
+++ b/lib/config/decrypt.ts
@@ -54,7 +54,7 @@ export function decryptConfig(
                 if (decryptedConfig.npmrc.includes('${NPM_TOKEN}')) {
                   logger.debug('Replacing ${NPM_TOKEN} with decrypted token');
                   decryptedConfig.npmrc = decryptedConfig.npmrc.replace(
-                    '${NPM_TOKEN}',
+                    /\${NPM_TOKEN}/g,
                     token
                   );
                 } else {
-- 
GitLab