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 b6faad3034115dfaf5b8c4a9075cb9ca8c2abf24..117b963fb19d028c4c73e40a4c01b5fb77a98503 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 c4afb5bd4c147ee47bb751939b3ee6b559253873..926b6c189ea68d2885a88e52e72cdcac4f4254cf 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 c8e61624b14b5a95c3144798dde9bb33eb3e78fa..d91b73b70a563970eae2c852731ed774d42f23c7 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