diff --git a/lib/modules/manager/npm/post-update/yarn.spec.ts b/lib/modules/manager/npm/post-update/yarn.spec.ts index fd931c487d0989ce832462d37daeec086088f3af..ac6e98c9d5e875ed3efa80da7d5d9df25c3bc67a 100644 --- a/lib/modules/manager/npm/post-update/yarn.spec.ts +++ b/lib/modules/manager/npm/post-update/yarn.spec.ts @@ -647,5 +647,17 @@ describe('modules/manager/npm/post-update/yarn', () => { expect(yarnPath).toBeNull(); expect(Fixtures.toJSON()['/tmp/renovate/.yarnrc']).toBe('\n'); }); + + it('removes pure-lockfile and frozen-lockfile from .yarnrc', async () => { + Fixtures.mock( + { + '.yarnrc': `--install.pure-lockfile true\n--install.frozen-lockfile true\n`, + }, + '/tmp/renovate' + ); + GlobalConfig.set({ localDir: '/tmp/renovate', cacheDir: '/tmp/cache' }); + await yarnHelper.checkYarnrc('/tmp/renovate'); + expect(Fixtures.toJSON()['/tmp/renovate/.yarnrc']).toBe('\n\n'); + }); }); }); diff --git a/lib/modules/manager/npm/post-update/yarn.ts b/lib/modules/manager/npm/post-update/yarn.ts index 896d3a42f55d40676c918ce45f740cffe3bdc683..fd554192db1ff9e16aa9fdab43681a032edf494b 100644 --- a/lib/modules/manager/npm/post-update/yarn.ts +++ b/lib/modules/manager/npm/post-update/yarn.ts @@ -56,16 +56,22 @@ export async function checkYarnrc( const yarnBinaryExists = yarnPath ? await localPathIsFile(yarnPath) : false; + let scrubbedYarnrc = yarnrc + .replace('--install.pure-lockfile true', '') + .replace('--install.frozen-lockfile true', ''); if (!yarnBinaryExists) { - const scrubbedYarnrc = yarnrc.replace( + scrubbedYarnrc = scrubbedYarnrc.replace( regEx(/^yarn-path\s+"?.+?"?$/gm), '' ); + yarnPath = null; + } + if (yarnrc !== scrubbedYarnrc) { + logger.debug(`Writing scrubbed .yarnrc to ${lockFileDir}`); await writeLocalFile( upath.join(lockFileDir, '.yarnrc'), scrubbedYarnrc ); - yarnPath = null; } } } catch (err) /* istanbul ignore next */ {