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'
|
||||
| 'peerDependenciesMeta'
|
||||
| 'optionalDependencies'
|
||||
| 'packageManager'
|
||||
>;
|
||||
|
||||
/**
|
||||
@ -42,6 +43,7 @@ export function normalizePackageJson(
|
||||
peerDependencies,
|
||||
peerDependenciesMeta,
|
||||
optionalDependencies,
|
||||
packageManager,
|
||||
} = packageJson;
|
||||
|
||||
return {
|
||||
@ -53,5 +55,6 @@ export function normalizePackageJson(
|
||||
peerDependencies,
|
||||
peerDependenciesMeta,
|
||||
optionalDependencies,
|
||||
packageManager,
|
||||
};
|
||||
}
|
||||
|
||||
@ -2596,6 +2596,7 @@ __metadata:
|
||||
dependencies: {
|
||||
resolve: '^1.12.0',
|
||||
},
|
||||
packageManager: 'yarn@3.0.0',
|
||||
};
|
||||
|
||||
const hash = uniq('mock-hash');
|
||||
@ -2721,6 +2722,7 @@ __metadata:
|
||||
dependencies: {
|
||||
resolve: '^1.12.0',
|
||||
},
|
||||
packageManager: 'yarn@4.0.0',
|
||||
};
|
||||
|
||||
const hash = uniq('mock-hash');
|
||||
@ -2771,7 +2773,7 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@my-ns/example@workspace:."
|
||||
dependencies:
|
||||
resolve: ^1.12.0
|
||||
resolve: "npm:^1.12.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
|
||||
@ -602,18 +602,42 @@ const BERRY_LOCK_FILE_DISCLAIMER = `# This file is generated by running "yarn in
|
||||
function generateRootWorkspacePackage(
|
||||
packageJson: NormalizedPackageJson
|
||||
): 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 {
|
||||
version: '0.0.0-use.local',
|
||||
resolution: `${packageJson.name}@workspace:.`,
|
||||
...(packageJson.dependencies && { dependencies: packageJson.dependencies }),
|
||||
...(packageJson.dependencies && {
|
||||
dependencies: Object.entries(packageJson.dependencies).reduce(
|
||||
reducer,
|
||||
{}
|
||||
),
|
||||
}),
|
||||
...(packageJson.peerDependencies && {
|
||||
peerDependencies: packageJson.peerDependencies,
|
||||
peerDependencies: Object.entries(packageJson.peerDependencies).reduce(
|
||||
reducer,
|
||||
{}
|
||||
),
|
||||
}),
|
||||
...(packageJson.devDependencies && {
|
||||
devDependencies: packageJson.devDependencies,
|
||||
devDependencies: Object.entries(packageJson.devDependencies).reduce(
|
||||
reducer,
|
||||
{}
|
||||
),
|
||||
}),
|
||||
...(packageJson.optionalDependencies && {
|
||||
optionalDependencies: packageJson.optionalDependencies,
|
||||
optionalDependencies: Object.entries(
|
||||
packageJson.optionalDependencies
|
||||
).reduce(reducer, {}),
|
||||
}),
|
||||
languageName: 'unknown',
|
||||
linkType: 'soft',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user