fix: overrides that contain parent with range (#3743)

close #3732
This commit is contained in:
Zoltan Kochan
2021-09-03 03:37:33 +03:00
committed by GitHub
parent 869b1afcbe
commit ccf2f295d6
3 changed files with 52 additions and 2 deletions

View File

@@ -0,0 +1,5 @@
---
"supi": patch
---
Fix overrides that specify the parent package with a range.

View File

@@ -4,6 +4,8 @@ import parseWantedDependency from '@pnpm/parse-wanted-dependency'
import normalizePath from 'normalize-path'
import semver from 'semver'
const DELIMITER_REGEX = /[^ |@]>/
export default function (
overrides: Record<string, string>,
rootDir: string
@@ -16,8 +18,9 @@ export default function (
if (newPref.startsWith('link:')) {
linkTarget = path.join(rootDir, newPref.substring(5))
}
if (selector.includes('>') && (!selector.includes('@') || selector.indexOf('>') < selector.lastIndexOf('@'))) {
const delimiterIndex = selector.indexOf('>')
let delimiterIndex = selector.search(DELIMITER_REGEX)
if (delimiterIndex !== -1) {
delimiterIndex++
const parentSelector = selector.substring(0, delimiterIndex)
const childSelector = selector.substring(delimiterIndex + 1)
versionOverrides.push({

View File

@@ -147,3 +147,45 @@ test('createVersionsOverrider() overrides dependencies with links', () => {
},
})
})
test('createVersionsOverrider() overrides dependency of pkg matched by name and version', () => {
const overrider = createVersionsOverrider({
'yargs@^7.1.0>yargs-parser': '^20.0.0',
}, process.cwd())
expect(
overrider({
name: 'yargs',
version: '7.1.0',
dependencies: {
'yargs-parser': '19',
},
})
).toStrictEqual({
name: 'yargs',
version: '7.1.0',
dependencies: {
'yargs-parser': '^20.0.0',
},
})
})
test('createVersionsOverrider() does not override dependency of pkg matched by name and version', () => {
const overrider = createVersionsOverrider({
'yargs@^8.1.0>yargs-parser': '^20.0.0',
}, process.cwd())
expect(
overrider({
name: 'yargs',
version: '7.1.0',
dependencies: {
'yargs-parser': '19',
},
})
).toStrictEqual({
name: 'yargs',
version: '7.1.0',
dependencies: {
'yargs-parser': '19',
},
})
})