From 544d54c72a3d7099491bae97e1915e738e463331 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Sat, 10 Apr 2021 06:38:26 +0200 Subject: [PATCH] feat(npm): retain npmrc lines without variables --- lib/manager/npm/extract/index.spec.ts | 6 +++--- lib/manager/npm/extract/index.ts | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/manager/npm/extract/index.spec.ts b/lib/manager/npm/extract/index.spec.ts index 79653416cc962c..1917c158bcec20 100644 --- a/lib/manager/npm/extract/index.spec.ts +++ b/lib/manager/npm/extract/index.spec.ts @@ -126,11 +126,11 @@ describe('manager/npm/extract', () => { ); expect(res.npmrc).toBeUndefined(); }); - it('finds and discards .npmrc', async () => { + it('finds and filters .npmrc with variables', async () => { fs.readLocalFile = jest.fn((fileName) => { if (fileName === '.npmrc') { // eslint-disable-next-line - return '//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}\n'; + return 'registry=https://registry.npmjs.org\n//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}\n'; } return null; }); @@ -139,7 +139,7 @@ describe('manager/npm/extract', () => { 'package.json', {} ); - expect(res.npmrc).toEqual(''); + expect(res.npmrc).toEqual('registry=https://registry.npmjs.org\n'); }); it('finds lerna', async () => { fs.readLocalFile = jest.fn((fileName) => { diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts index cbc04c1596e629..7d745f386604d9 100644 --- a/lib/manager/npm/extract/index.ts +++ b/lib/manager/npm/extract/index.ts @@ -106,8 +106,14 @@ export async function extractPackageFile( npmrc = npmrc.replace(/(^|\n)package-lock.*?(\n|$)/g, '\n'); } if (npmrc.includes('=${') && !getAdminConfig().exposeAllEnv) { - logger.debug('Overriding .npmrc file with variables'); - npmrc = ''; + logger.debug( + { npmrcFileName }, + 'Stripping .npmrc file of lines with variables' + ); + npmrc = npmrc + .split('\n') + .filter((line) => !line.includes('=${')) + .join('\n'); } } }