From d6559f6357e308daac1a593ea6e968f84c7443fd Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Thu, 6 Aug 2020 07:59:22 +0200
Subject: [PATCH] fix(yarn): allow overwriting of yarnrc file (#6922)

---
 lib/manager/common.ts                | 2 +-
 lib/manager/npm/extract/index.ts     | 5 ++++-
 lib/manager/npm/post-update/index.ts | 3 ++-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/lib/manager/common.ts b/lib/manager/common.ts
index 0d219da80c..0e7421db5f 100644
--- a/lib/manager/common.ts
+++ b/lib/manager/common.ts
@@ -22,7 +22,7 @@ export interface ExtractConfig extends ManagerConfig {
   gradle?: { timeout?: number };
   aliases?: Record<string, string>;
   ignoreNpmrcFile?: boolean;
-
+  yarnrc?: string;
   skipInstalls?: boolean;
   versioning?: string;
 }
diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts
index 2e739b24f2..af87571eb3 100644
--- a/lib/manager/npm/extract/index.ts
+++ b/lib/manager/npm/extract/index.ts
@@ -118,7 +118,10 @@ export async function extractPackageFile(
     }
   }
   const yarnrcFileName = getSiblingFileName(fileName, '.yarnrc');
-  const yarnrc = (await readLocalFile(yarnrcFileName, 'utf8')) || undefined;
+  let yarnrc;
+  if (!is.string(config.yarnrc)) {
+    yarnrc = (await readLocalFile(yarnrcFileName, 'utf8')) || undefined;
+  }
 
   let lernaDir: string;
   let lernaPackages: string[];
diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts
index c89f361a36..b93ac0080d 100644
--- a/lib/manager/npm/post-update/index.ts
+++ b/lib/manager/npm/post-update/index.ts
@@ -1,4 +1,5 @@
 import path from 'path';
+import is from '@sindresorhus/is';
 import upath from 'upath';
 import { SYSTEM_INSUFFICIENT_DISK_SPACE } from '../../../constants/error-messages';
 import { id as npmId } from '../../../datasource/npm';
@@ -129,7 +130,7 @@ export async function writeExistingFiles(
     logger.debug('Removing ignored .npmrc file before artifact generation');
     await remove(npmrcFile);
   }
-  if (config.yarnrc) {
+  if (is.string(config.yarnrc)) {
     logger.debug(`Writing repo .yarnrc (${config.localDir})`);
     await outputFile(upath.join(config.localDir, '.yarnrc'), config.yarnrc);
   }
-- 
GitLab