mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-10 18:18:56 -04:00
5
.changeset/empty-queens-run.md
Normal file
5
.changeset/empty-queens-run.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"supi": patch
|
||||
---
|
||||
|
||||
Fix overrides that specify the parent package with a range.
|
||||
@@ -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({
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user