fix(core): update yarn-parser to handle yarn v4 syntax for root workspace package (#29452)
<!-- 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` --> <!-- If this is a particularly complex change or feature addition, you can request a dedicated Nx release for this pull request branch. Mention someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they will confirm if the PR warrants its own release for testing purposes, and generate it for you if appropriate. --> ## Current Behavior The root workspace package is not generated correctly when using Yarn v4 ## Expected Behavior yarn.lock should be created correctly ## Related Issue(s) Fixes #29451
This commit is contained in:
parent
cf206c3928
commit
3c98a1ca56
@ -25,6 +25,7 @@ export type NormalizedPackageJson = Pick<
|
|||||||
| 'peerDependencies'
|
| 'peerDependencies'
|
||||||
| 'peerDependenciesMeta'
|
| 'peerDependenciesMeta'
|
||||||
| 'optionalDependencies'
|
| 'optionalDependencies'
|
||||||
|
| 'packageManager'
|
||||||
>;
|
>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,6 +43,7 @@ export function normalizePackageJson(
|
|||||||
peerDependencies,
|
peerDependencies,
|
||||||
peerDependenciesMeta,
|
peerDependenciesMeta,
|
||||||
optionalDependencies,
|
optionalDependencies,
|
||||||
|
packageManager,
|
||||||
} = packageJson;
|
} = packageJson;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -53,5 +55,6 @@ export function normalizePackageJson(
|
|||||||
peerDependencies,
|
peerDependencies,
|
||||||
peerDependenciesMeta,
|
peerDependenciesMeta,
|
||||||
optionalDependencies,
|
optionalDependencies,
|
||||||
|
packageManager,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2596,6 +2596,7 @@ __metadata:
|
|||||||
dependencies: {
|
dependencies: {
|
||||||
resolve: '^1.12.0',
|
resolve: '^1.12.0',
|
||||||
},
|
},
|
||||||
|
packageManager: 'yarn@3.0.0',
|
||||||
};
|
};
|
||||||
|
|
||||||
const hash = uniq('mock-hash');
|
const hash = uniq('mock-hash');
|
||||||
@ -2721,6 +2722,7 @@ __metadata:
|
|||||||
dependencies: {
|
dependencies: {
|
||||||
resolve: '^1.12.0',
|
resolve: '^1.12.0',
|
||||||
},
|
},
|
||||||
|
packageManager: 'yarn@4.0.0',
|
||||||
};
|
};
|
||||||
|
|
||||||
const hash = uniq('mock-hash');
|
const hash = uniq('mock-hash');
|
||||||
@ -2771,7 +2773,7 @@ __metadata:
|
|||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@my-ns/example@workspace:."
|
resolution: "@my-ns/example@workspace:."
|
||||||
dependencies:
|
dependencies:
|
||||||
resolve: ^1.12.0
|
resolve: "npm:^1.12.0"
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
|||||||
@ -602,18 +602,42 @@ const BERRY_LOCK_FILE_DISCLAIMER = `# This file is generated by running "yarn in
|
|||||||
function generateRootWorkspacePackage(
|
function generateRootWorkspacePackage(
|
||||||
packageJson: NormalizedPackageJson
|
packageJson: NormalizedPackageJson
|
||||||
): YarnDependency {
|
): YarnDependency {
|
||||||
|
let isVersion4 = false;
|
||||||
|
if (!!packageJson.packageManager) {
|
||||||
|
const [_, version] = packageJson.packageManager.split('@');
|
||||||
|
isVersion4 = !!version && satisfies(version, '>=4.0.0');
|
||||||
|
}
|
||||||
|
|
||||||
|
const reducer = (acc, [name, version]) => {
|
||||||
|
acc[name] = isVersion4 ? `npm:${version}` : version;
|
||||||
|
return acc;
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: '0.0.0-use.local',
|
version: '0.0.0-use.local',
|
||||||
resolution: `${packageJson.name}@workspace:.`,
|
resolution: `${packageJson.name}@workspace:.`,
|
||||||
...(packageJson.dependencies && { dependencies: packageJson.dependencies }),
|
...(packageJson.dependencies && {
|
||||||
|
dependencies: Object.entries(packageJson.dependencies).reduce(
|
||||||
|
reducer,
|
||||||
|
{}
|
||||||
|
),
|
||||||
|
}),
|
||||||
...(packageJson.peerDependencies && {
|
...(packageJson.peerDependencies && {
|
||||||
peerDependencies: packageJson.peerDependencies,
|
peerDependencies: Object.entries(packageJson.peerDependencies).reduce(
|
||||||
|
reducer,
|
||||||
|
{}
|
||||||
|
),
|
||||||
}),
|
}),
|
||||||
...(packageJson.devDependencies && {
|
...(packageJson.devDependencies && {
|
||||||
devDependencies: packageJson.devDependencies,
|
devDependencies: Object.entries(packageJson.devDependencies).reduce(
|
||||||
|
reducer,
|
||||||
|
{}
|
||||||
|
),
|
||||||
}),
|
}),
|
||||||
...(packageJson.optionalDependencies && {
|
...(packageJson.optionalDependencies && {
|
||||||
optionalDependencies: packageJson.optionalDependencies,
|
optionalDependencies: Object.entries(
|
||||||
|
packageJson.optionalDependencies
|
||||||
|
).reduce(reducer, {}),
|
||||||
}),
|
}),
|
||||||
languageName: 'unknown',
|
languageName: 'unknown',
|
||||||
linkType: 'soft',
|
linkType: 'soft',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user