From 2a0f2fbba933c95f8ec008aaa346b49aaf0384a8 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Thu, 7 Jun 2018 12:39:49 +0200
Subject: [PATCH] fix(npm): filter out package-lock = false in .npmrc

This prevents us from updating npm lock files
---
 lib/manager/npm/extract/index.js       |  4 ++++
 test/manager/npm/extract/index.spec.js | 14 ++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js
index 48148be927..d754d8b23d 100644
--- a/lib/manager/npm/extract/index.js
+++ b/lib/manager/npm/extract/index.js
@@ -66,6 +66,10 @@ async function extractDependencies(content, packageFile, config) {
     npmrc = await platform.getFile(
       upath.join(path.dirname(packageFile), '.npmrc')
     );
+    if (npmrc && npmrc.includes('package-lock')) {
+      logger.info('Stripping package-lock setting from npmrc');
+      npmrc = npmrc.replace(/(^|\\n)package-lock.*?(\n|$)/g, '');
+    }
     if (npmrc) {
       if (
         npmrc.includes('=${') &&
diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js
index 7ecd8b0296..ccd7b24ca2 100644
--- a/test/manager/npm/extract/index.spec.js
+++ b/test/manager/npm/extract/index.spec.js
@@ -76,6 +76,20 @@ describe('manager/npm/extract', () => {
       );
       expect(res).toMatchSnapshot();
     });
+    it('finds and filters .npmrc', async () => {
+      platform.getFile = jest.fn(fileName => {
+        if (fileName === '.npmrc') {
+          return 'save-exact = true\npackage-lock = false\n';
+        }
+        return null;
+      });
+      const res = await npmExtract.extractDependencies(
+        input01Content,
+        'package.json',
+        { global: {} }
+      );
+      expect(res.npmrc).toBeDefined();
+    });
     it('finds and discards .npmrc', async () => {
       platform.getFile = jest.fn(fileName => {
         if (fileName === '.npmrc') {
-- 
GitLab