mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-10 18:18:56 -04:00
fix: overriding should work when the range selector contains >
This commit is contained in:
5
.changeset/pink-ears-know.md
Normal file
5
.changeset/pink-ears-know.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"supi": patch
|
||||
---
|
||||
|
||||
Overriding should work, when the range selector contains the ">" symbol.
|
||||
@@ -16,8 +16,10 @@ export default function (
|
||||
if (newPref.startsWith('link:')) {
|
||||
linkTarget = path.join(rootDir, newPref.substring(5))
|
||||
}
|
||||
if (selector.includes('>')) {
|
||||
const [parentSelector, childSelector] = selector.split('>')
|
||||
if (selector.includes('>') && selector.indexOf('>') < selector.lastIndexOf('@')) {
|
||||
const delimiterIndex = selector.indexOf('>')
|
||||
const parentSelector = selector.substring(0, delimiterIndex)
|
||||
const childSelector = selector.substring(delimiterIndex + 1)
|
||||
versionOverrides.push({
|
||||
linkTarget,
|
||||
newPref,
|
||||
|
||||
@@ -4,12 +4,17 @@ import createVersionsOverrider from 'supi/lib/install/createVersionsOverrider'
|
||||
test('createVersionsOverrider() matches subranges', () => {
|
||||
const overrider = createVersionsOverrider({
|
||||
'foo@2': '2.12.0',
|
||||
'qar@>2': '1.0.0',
|
||||
}, process.cwd())
|
||||
expect(
|
||||
overrider({
|
||||
dependencies: { foo: '^2.10.0' },
|
||||
optionalDependencies: { qar: '^4.0.0' },
|
||||
})
|
||||
).toStrictEqual({ dependencies: { foo: '2.12.0' } })
|
||||
).toStrictEqual({
|
||||
dependencies: { foo: '2.12.0' },
|
||||
optionalDependencies: { qar: '1.0.0' },
|
||||
})
|
||||
})
|
||||
|
||||
test('createVersionsOverrider() does not fail on non-range selectors', () => {
|
||||
@@ -35,6 +40,7 @@ test('createVersionsOverrider() does not fail on non-range selectors', () => {
|
||||
test('createVersionsOverrider() overrides dependencies of specified packages only', () => {
|
||||
const overrider = createVersionsOverrider({
|
||||
'foo@1>bar@^1.2.0': '3.0.0',
|
||||
'qar@1>bar@>4': '3.0.0',
|
||||
}, process.cwd())
|
||||
expect(overrider({
|
||||
name: 'foo',
|
||||
@@ -62,6 +68,32 @@ test('createVersionsOverrider() overrides dependencies of specified packages onl
|
||||
bar: '^1.2.0',
|
||||
},
|
||||
})
|
||||
expect(overrider({
|
||||
name: 'qar',
|
||||
version: '1.0.0',
|
||||
dependencies: {
|
||||
bar: '^10.0.0',
|
||||
},
|
||||
})).toStrictEqual({
|
||||
name: 'qar',
|
||||
version: '1.0.0',
|
||||
dependencies: {
|
||||
bar: '3.0.0',
|
||||
},
|
||||
})
|
||||
expect(overrider({
|
||||
name: 'qar',
|
||||
version: '1.0.0',
|
||||
dependencies: {
|
||||
bar: '^4.0.0',
|
||||
},
|
||||
})).toStrictEqual({
|
||||
name: 'qar',
|
||||
version: '1.0.0',
|
||||
dependencies: {
|
||||
bar: '^4.0.0',
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
test('createVersionsOverrider() overrides all types of dependencies', () => {
|
||||
|
||||
Reference in New Issue
Block a user