From fd1b04665a4723a8f6188f899094d70fbbd8e6fd Mon Sep 17 00:00:00 2001 From: ylemkimon <mail@ylem.kim> Date: Thu, 10 Sep 2020 14:00:21 +0900 Subject: [PATCH] fix(npm): fix lockfileUpdate commands for Yarn 2 (#7230) --- .../__snapshots__/yarn.spec.ts.snap | 2 +- lib/manager/npm/post-update/yarn.spec.ts | 1 + lib/manager/npm/post-update/yarn.ts | 25 +++++++++++++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/manager/npm/post-update/__snapshots__/yarn.spec.ts.snap b/lib/manager/npm/post-update/__snapshots__/yarn.spec.ts.snap index b6faad3034..117b963fb1 100644 --- a/lib/manager/npm/post-update/__snapshots__/yarn.spec.ts.snap +++ b/lib/manager/npm/post-update/__snapshots__/yarn.spec.ts.snap @@ -458,7 +458,7 @@ Array [ }, }, Object { - "cmd": "yarn up some-dep", + "cmd": "yarn up some-dep@^1.0.0", "options": Object { "cwd": "some-dir", "encoding": "utf-8", diff --git a/lib/manager/npm/post-update/yarn.spec.ts b/lib/manager/npm/post-update/yarn.spec.ts index c4afb5bd4c..926b6c189e 100644 --- a/lib/manager/npm/post-update/yarn.spec.ts +++ b/lib/manager/npm/post-update/yarn.spec.ts @@ -84,6 +84,7 @@ describe(getName(__filename), () => { const res = await yarnHelper.generateLockFile('some-dir', {}, config, [ { depName: 'some-dep', + newValue: '^1.0.0', isLockfileUpdate: true, }, ]); diff --git a/lib/manager/npm/post-update/yarn.ts b/lib/manager/npm/post-update/yarn.ts index c8e61624b1..d91b73b70a 100644 --- a/lib/manager/npm/post-update/yarn.ts +++ b/lib/manager/npm/post-update/yarn.ts @@ -119,16 +119,25 @@ export async function generateLockFile( commands.push(`yarn install ${cmdOptions}`.trim()); // rangeStrategy = update-lockfile - const lockUpdates = upgrades - .filter((upgrade) => upgrade.isLockfileUpdate) - .map((upgrade) => upgrade.depName); // note - this can hit a yarn bug, see https://github.com/yarnpkg/yarn/issues/8236 + const lockUpdates = upgrades.filter((upgrade) => upgrade.isLockfileUpdate); if (lockUpdates.length) { logger.debug('Performing lockfileUpdate (yarn)'); - commands.push( - `yarn ${isYarn1 ? 'upgrade' : 'up'} ${lockUpdates.join( - ' ' - )} ${cmdOptions}`.trim() - ); + if (isYarn1) { + // `yarn upgrade` updates based on the version range specified in the package file + // note - this can hit a yarn bug, see https://github.com/yarnpkg/yarn/issues/8236 + commands.push( + `yarn upgrade ${lockUpdates + .map((update) => update.depName) + .join(' ')} ${cmdOptions}`.trim() + ); + } else { + // `yarn up` updates to the latest release, so the range should be specified + commands.push( + `yarn up ${lockUpdates + .map((update) => `${update.depName}@${update.newValue}`) + .join(' ')}` + ); + } } // postUpdateOptions -- GitLab