diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js
index bf147185dd9789392cab233bd183cfb9851455c2..8ab423c9fc75f2d5925c23d0e91c1fc9c320d010 100644
--- a/lib/manager/npm/extract/index.js
+++ b/lib/manager/npm/extract/index.js
@@ -9,7 +9,7 @@ module.exports = {
   postExtract,
 };
 
-async function extractDependencies(content, packageFile) {
+async function extractDependencies(content, packageFile, config) {
   logger.debug(`npm.extractDependencies(${packageFile})`);
   logger.trace({ content });
   const deps = [];
@@ -46,11 +46,14 @@ async function extractDependencies(content, packageFile) {
   delete lockFiles.packageLock;
   delete lockFiles.shrinkwrapJson;
 
-  let npmrc = await platform.getFile(
-    upath.join(path.dirname(packageFile), '.npmrc')
-  );
-  if (!npmrc) {
-    npmrc = undefined;
+  let npmrc;
+  if (!config.ignoreNpmrcFile) {
+    npmrc = await platform.getFile(
+      upath.join(path.dirname(packageFile), '.npmrc')
+    );
+    if (!npmrc) {
+      npmrc = undefined;
+    }
   }
 
   let lernaDir;
diff --git a/lib/manager/npm/post-update/index.js b/lib/manager/npm/post-update/index.js
index 1594cd58556918743e737d9fc4d0fedc337d204e..f9ae03ad91332c46501d7d310e0287c6c780270e 100644
--- a/lib/manager/npm/post-update/index.js
+++ b/lib/manager/npm/post-update/index.js
@@ -169,11 +169,7 @@ async function writeExistingFiles(config, packageFiles) {
         );
       }
     }
-    let { npmrc } = config;
-    if (packageFile.npmrc && !config.ignoreNpmrc) {
-      logger.debug('Using package.json .npmrc');
-      npmrc = npmrc || packageFile.npmrc;
-    }
+    const npmrc = packageFile.npmrc || config.npmrc;
     if (npmrc) {
       await fs.outputFile(upath.join(basedir, '.npmrc'), npmrc);
     }
diff --git a/lib/workers/repository/extract/manager-files.js b/lib/workers/repository/extract/manager-files.js
index 4f118298eff7e8c0e2819b783a647e99d1a4901a..f54d3ed3dffd4ee6dbeb0454e2f0b9bd0df53799 100644
--- a/lib/workers/repository/extract/manager-files.js
+++ b/lib/workers/repository/extract/manager-files.js
@@ -41,7 +41,12 @@ async function getManagerPackageFiles(config, managerConfig) {
   const packageFiles = [];
   for (const packageFile of matchedFiles) {
     const content = await platform.getFile(packageFile);
-    const res = await extractDependencies(manager, content, packageFile);
+    const res = await extractDependencies(
+      manager,
+      content,
+      packageFile,
+      config
+    );
     if (res) {
       packageFiles.push({
         packageFile,
diff --git a/lib/workers/repository/init/config.js b/lib/workers/repository/init/config.js
index 432a392992ba3113d2651b1b312ab2dda3eef623..a2d1d28969df103cd6bc88eabbf7fbb479e01d70 100644
--- a/lib/workers/repository/init/config.js
+++ b/lib/workers/repository/init/config.js
@@ -22,7 +22,7 @@ async function mergeRenovateConfig(config) {
     const migratedConfig = await migrateAndValidate(config, renovateJson);
     const resolvedConfig = await presets.resolveConfigPresets(migratedConfig);
     if (resolvedConfig.npmrc) {
-      resolvedConfig.ignoreNpmrc = true;
+      resolvedConfig.ignoreNpmrcFile = true;
     }
     returnConfig = mergeChildConfig(returnConfig, resolvedConfig);
     returnConfig.renovateJsonPresent = true;
diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js
index d10e126b655bceefc03fc20069ebd5c0c9b02a69..64d62bbf6bf57a74b35a0adc1346a1d997ecaf2b 100644
--- a/test/manager/npm/extract/index.spec.js
+++ b/test/manager/npm/extract/index.spec.js
@@ -19,25 +19,32 @@ describe('manager/npm/extract', () => {
     it('returns null if cannot parse', async () => {
       const res = await npmExtract.extractDependencies(
         'not json',
-        'package.json'
+        'package.json',
+        {}
       );
       expect(res).toBe(null);
     });
     it('returns null if no deps', async () => {
-      const res = await npmExtract.extractDependencies('{}', 'package.json');
+      const res = await npmExtract.extractDependencies(
+        '{}',
+        'package.json',
+        {}
+      );
       expect(res).toBe(null);
     });
     it('handles invalid', async () => {
       const res = await npmExtract.extractDependencies(
         '{"dependencies": true, "devDependencies": []}',
-        'package.json'
+        'package.json',
+        {}
       );
       expect(res).toBe(null);
     });
     it('returns an array of dependencies', async () => {
       const res = await npmExtract.extractDependencies(
         input01Content,
-        'package.json'
+        'package.json',
+        {}
       );
       expect(res).toMatchSnapshot();
     });
@@ -50,7 +57,8 @@ describe('manager/npm/extract', () => {
       });
       const res = await npmExtract.extractDependencies(
         input01Content,
-        'package.json'
+        'package.json',
+        {}
       );
       expect(res).toMatchSnapshot();
     });
@@ -63,7 +71,8 @@ describe('manager/npm/extract', () => {
       });
       const res = await npmExtract.extractDependencies(
         input01Content,
-        'package.json'
+        'package.json',
+        {}
       );
       expect(res).toMatchSnapshot();
     });