diff --git a/lib/modules/manager/bun/readme.md b/lib/modules/manager/bun/readme.md index 0fa2f420f7fb95db97e16f2a57a55f4e0a987909..807c7f8435ef33b378dfefebacf7943b468e40f4 100644 --- a/lib/modules/manager/bun/readme.md +++ b/lib/modules/manager/bun/readme.md @@ -1,5 +1,4 @@ Used for updating bun projects. Bun is a tool for JavaScript projects and therefore an alternative to managers like npm, pnpm and Yarn. -If a `package.json` is found to be part of `bun` manager results then the same file will be excluded from the `npm` manager results so that it's not duplicated. -This means that supporting a `bun.lockb` file in addition to other JS lock files is not supported - Bun will take priority. +If a `package.json` is found to be part of `bun` manager results then the same file will be excluded from the `npm` manager results unless an npm/pnpm/Yarn lock file is also found. diff --git a/lib/workers/repository/extract/supersedes.spec.ts b/lib/workers/repository/extract/supersedes.spec.ts index 247b74e52a067857befb65d6ad0b787540abc6ba..a71e4117ea98237e03ff066d7f2978a3673d3c5d 100644 --- a/lib/workers/repository/extract/supersedes.spec.ts +++ b/lib/workers/repository/extract/supersedes.spec.ts @@ -14,13 +14,21 @@ describe('workers/repository/extract/supersedes', () => { { manager: 'ansible' }, { manager: 'bun', - packageFiles: [{ packageFile: 'package.json', deps: [] }], + packageFiles: [ + { packageFile: 'package.json', deps: [] }, + { packageFile: 'frontend/package.json', deps: [] }, + ], }, { manager: 'npm', packageFiles: [ { packageFile: 'package.json', deps: [] }, { packageFile: 'backend/package.json', deps: [] }, + { + packageFile: 'frontend/package.json', + deps: [], + lockFiles: ['frontend/yarn.lock'], + }, ], }, ]; @@ -34,11 +42,22 @@ describe('workers/repository/extract/supersedes', () => { deps: [], packageFile: 'package.json', }, + { + deps: [], + packageFile: 'frontend/package.json', + }, ], }, { manager: 'npm', - packageFiles: [{ deps: [], packageFile: 'backend/package.json' }], + packageFiles: [ + { deps: [], packageFile: 'backend/package.json' }, + { + deps: [], + lockFiles: ['frontend/yarn.lock'], + packageFile: 'frontend/package.json', + }, + ], }, ]); }); diff --git a/lib/workers/repository/extract/supersedes.ts b/lib/workers/repository/extract/supersedes.ts index 560d6bb0c50d65d460638c18130d4b60dbac4567..a0b322f9025bf047aafeff93784b6d3e10f6a79a 100644 --- a/lib/workers/repository/extract/supersedes.ts +++ b/lib/workers/repository/extract/supersedes.ts @@ -22,6 +22,7 @@ export function processSupersedesManagers( supercededManagerResults.packageFiles = supercededManagerResults.packageFiles.filter((packageFile) => { if ( + !packageFile.lockFiles?.length && supercedingPackageFileNames.includes(packageFile.packageFile) ) { return false;