fix(core): ensure correct hoisted packages detection with pnpm parser (#26153)
<!-- Please make sure you have read the submission guidelines before posting an PR --> <!-- https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr --> <!-- Please make sure that your commit message follows our format --> <!-- Example: `fix(nx): must begin with lowercase` --> ## Current Behavior <!-- This is the behavior we have today --> ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #
This commit is contained in:
parent
2b820a274e
commit
c7bea55d59
@ -249,7 +249,7 @@ hoistedDependencies:
|
|||||||
to-regex-range: private
|
to-regex-range: private
|
||||||
/tsconfig-paths/4.1.2:
|
/tsconfig-paths/4.1.2:
|
||||||
tsconfig-paths: private
|
tsconfig-paths: private
|
||||||
/tslib/2.4.1:
|
/tslib/2.5.0:
|
||||||
tslib: private
|
tslib: private
|
||||||
/universalify/2.0.0:
|
/universalify/2.0.0:
|
||||||
universalify: private
|
universalify: private
|
||||||
|
|||||||
@ -55,7 +55,7 @@ packages:
|
|||||||
ignore: 5.2.4
|
ignore: 5.2.4
|
||||||
nx: 15.4.5
|
nx: 15.4.5
|
||||||
semver: 7.3.4
|
semver: 7.3.4
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- typescript
|
- typescript
|
||||||
dev: false
|
dev: false
|
||||||
@ -98,7 +98,7 @@ packages:
|
|||||||
engines: {node: '>=14.15.0'}
|
engines: {node: '>=14.15.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
js-yaml: 3.14.1
|
js-yaml: 3.14.1
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@zkochan/js-yaml/0.0.6:
|
/@zkochan/js-yaml/0.0.6:
|
||||||
@ -698,7 +698,7 @@ packages:
|
|||||||
tar-stream: 2.2.0
|
tar-stream: 2.2.0
|
||||||
tmp: 0.2.1
|
tmp: 0.2.1
|
||||||
tsconfig-paths: 4.1.2
|
tsconfig-paths: 4.1.2
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
v8-compile-cache: 2.3.0
|
v8-compile-cache: 2.3.0
|
||||||
yargs: 17.6.2
|
yargs: 17.6.2
|
||||||
yargs-parser: 21.1.1
|
yargs-parser: 21.1.1
|
||||||
@ -900,8 +900,8 @@ packages:
|
|||||||
strip-bom: 3.0.0
|
strip-bom: 3.0.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/tslib/2.4.1:
|
/tslib/2.5.0:
|
||||||
resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
|
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/typescript/4.8.4:
|
/typescript/4.8.4:
|
||||||
|
|||||||
@ -57,7 +57,7 @@ packages:
|
|||||||
ignore: 5.2.4
|
ignore: 5.2.4
|
||||||
nx: 15.4.5
|
nx: 15.4.5
|
||||||
semver: 7.3.4
|
semver: 7.3.4
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- typescript
|
- typescript
|
||||||
dev: true
|
dev: true
|
||||||
@ -73,7 +73,7 @@ packages:
|
|||||||
'@nrwl/devkit': 15.4.5_nx@15.4.5+typescript@4.8.4
|
'@nrwl/devkit': 15.4.5_nx@15.4.5+typescript@4.8.4
|
||||||
'@phenomnomnominal/tsquery': 4.1.1_typescript@4.8.4
|
'@phenomnomnominal/tsquery': 4.1.1_typescript@4.8.4
|
||||||
tmp: 0.2.1
|
tmp: 0.2.1
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- nx
|
- nx
|
||||||
- typescript
|
- typescript
|
||||||
@ -121,7 +121,7 @@ packages:
|
|||||||
rxjs: 6.6.7
|
rxjs: 6.6.7
|
||||||
semver: 7.3.4
|
semver: 7.3.4
|
||||||
tmp: 0.2.1
|
tmp: 0.2.1
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
yargs: 17.6.2
|
yargs: 17.6.2
|
||||||
yargs-parser: 21.1.1
|
yargs-parser: 21.1.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -159,7 +159,7 @@ packages:
|
|||||||
engines: {node: '>=14.15.0'}
|
engines: {node: '>=14.15.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
js-yaml: 3.14.1
|
js-yaml: 3.14.1
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@zkochan/js-yaml/0.0.6:
|
/@zkochan/js-yaml/0.0.6:
|
||||||
@ -759,7 +759,7 @@ packages:
|
|||||||
tar-stream: 2.2.0
|
tar-stream: 2.2.0
|
||||||
tmp: 0.2.1
|
tmp: 0.2.1
|
||||||
tsconfig-paths: 4.1.2
|
tsconfig-paths: 4.1.2
|
||||||
tslib: 2.4.1
|
tslib: 2.5.0
|
||||||
v8-compile-cache: 2.3.0
|
v8-compile-cache: 2.3.0
|
||||||
yargs: 17.6.2
|
yargs: 17.6.2
|
||||||
yargs-parser: 21.1.1
|
yargs-parser: 21.1.1
|
||||||
@ -978,8 +978,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
|
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/tslib/2.4.1:
|
/tslib/2.5.0:
|
||||||
resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
|
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/typescript/4.8.4:
|
/typescript/4.8.4:
|
||||||
|
|||||||
@ -654,7 +654,6 @@ describe('pnpm LockFile utility', () => {
|
|||||||
'node_modules/cliui/package.json': '{"version": "7.0.4"}',
|
'node_modules/cliui/package.json': '{"version": "7.0.4"}',
|
||||||
'node_modules/js-yaml/package.json': '{"version": "4.1.0"}',
|
'node_modules/js-yaml/package.json': '{"version": "4.1.0"}',
|
||||||
'node_modules/minimatch/package.json': '{"version": "3.0.5"}',
|
'node_modules/minimatch/package.json': '{"version": "3.0.5"}',
|
||||||
'node_modules/tslib/package.json': '{"version": "2.4.1"}',
|
|
||||||
'node_modules/.modules.yaml': require(joinPathFragments(
|
'node_modules/.modules.yaml': require(joinPathFragments(
|
||||||
__dirname,
|
__dirname,
|
||||||
'__fixtures__/pruning/.modules.yaml'
|
'__fixtures__/pruning/.modules.yaml'
|
||||||
@ -709,6 +708,20 @@ describe('pnpm LockFile utility', () => {
|
|||||||
graph = builder.getUpdatedProjectGraph();
|
graph = builder.getUpdatedProjectGraph();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should parse hoisted versions', () => {
|
||||||
|
expect(graph.externalNodes['npm:tslib']).toMatchInlineSnapshot(`
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"hash": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
|
||||||
|
"packageName": "tslib",
|
||||||
|
"version": "2.5.0",
|
||||||
|
},
|
||||||
|
"name": "npm:tslib",
|
||||||
|
"type": "npm",
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
});
|
||||||
|
|
||||||
it('should prune single package', () => {
|
it('should prune single package', () => {
|
||||||
const typescriptPackageJson = require(joinPathFragments(
|
const typescriptPackageJson = require(joinPathFragments(
|
||||||
__dirname,
|
__dirname,
|
||||||
@ -794,6 +807,20 @@ describe('pnpm LockFile utility', () => {
|
|||||||
graph = builder.getUpdatedProjectGraph();
|
graph = builder.getUpdatedProjectGraph();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should parse hoisted versions', () => {
|
||||||
|
expect(graph.externalNodes['npm:tslib']).toMatchInlineSnapshot(`
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"hash": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
|
||||||
|
"packageName": "tslib",
|
||||||
|
"version": "2.5.0",
|
||||||
|
},
|
||||||
|
"name": "npm:tslib",
|
||||||
|
"type": "npm",
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
});
|
||||||
|
|
||||||
it('should prune single package', () => {
|
it('should prune single package', () => {
|
||||||
const typescriptPackageJson = require(joinPathFragments(
|
const typescriptPackageJson = require(joinPathFragments(
|
||||||
__dirname,
|
__dirname,
|
||||||
@ -879,6 +906,20 @@ describe('pnpm LockFile utility', () => {
|
|||||||
graph = builder.getUpdatedProjectGraph();
|
graph = builder.getUpdatedProjectGraph();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should parse hoisted versions', () => {
|
||||||
|
expect(graph.externalNodes['npm:tslib']).toMatchInlineSnapshot(`
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"hash": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
|
||||||
|
"packageName": "tslib",
|
||||||
|
"version": "2.5.0",
|
||||||
|
},
|
||||||
|
"name": "npm:tslib",
|
||||||
|
"type": "npm",
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
});
|
||||||
|
|
||||||
it('should prune single package', () => {
|
it('should prune single package', () => {
|
||||||
const typescriptPackageJson = require(joinPathFragments(
|
const typescriptPackageJson = require(joinPathFragments(
|
||||||
__dirname,
|
__dirname,
|
||||||
|
|||||||
@ -338,7 +338,7 @@ function getHoistedVersion(
|
|||||||
|
|
||||||
if (!version) {
|
if (!version) {
|
||||||
const key = Object.keys(hoistedDependencies).find((k) =>
|
const key = Object.keys(hoistedDependencies).find((k) =>
|
||||||
k.startsWith(isV5 ? `/${packageName}/` : `/${packageName}@`)
|
k.startsWith(`/${packageName}/`)
|
||||||
);
|
);
|
||||||
if (key) {
|
if (key) {
|
||||||
version = parseBaseVersion(getVersion(key.slice(1), packageName), isV5);
|
version = parseBaseVersion(getVersion(key.slice(1), packageName), isV5);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user