fix(release): do not update dependents when they already use "*" (#20607)

This commit is contained in:
James Henry 2023-12-06 17:28:41 +04:00 committed by GitHub
parent 4502fb9b5a
commit 6d68236d46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 98 additions and 0 deletions

View File

@ -419,6 +419,98 @@ To fix this you will either need to add a package.json file at that location, or
`); `);
}); });
it(`should not update dependents when they are using version "*"`, async () => {
projectGraph = createWorkspaceWithPackageDependencies(tree, {
'my-lib': {
projectRoot: 'libs/my-lib',
packageName: 'my-lib',
version: '0.0.1',
packageJsonPath: 'libs/my-lib/package.json',
localDependencies: [],
},
'project-with-dependency-on-my-pkg': {
projectRoot: 'libs/project-with-dependency-on-my-pkg',
packageName: 'project-with-dependency-on-my-pkg',
version: '0.0.1',
packageJsonPath:
'libs/project-with-dependency-on-my-pkg/package.json',
localDependencies: [
{
projectName: 'my-lib',
dependencyCollection: 'dependencies',
version: '*',
},
],
},
'project-with-devDependency-on-my-pkg': {
projectRoot: 'libs/project-with-devDependency-on-my-pkg',
packageName: 'project-with-devDependency-on-my-pkg',
version: '0.0.1',
packageJsonPath:
'libs/project-with-devDependency-on-my-pkg/package.json',
localDependencies: [
{
projectName: 'my-lib',
dependencyCollection: 'devDependencies',
version: '*',
},
],
},
});
expect(readJson(tree, 'libs/my-lib/package.json').version).toEqual(
'0.0.1'
);
expect(
readJson(tree, 'libs/project-with-dependency-on-my-pkg/package.json')
.version
).toEqual('0.0.1');
await releaseVersionGenerator(tree, {
projects: Object.values(projectGraph.nodes), // version all projects
projectGraph,
specifier: '4.5.6', // user CLI specifier override set, no prompting should occur
currentVersionResolver: 'disk',
specifierSource: 'prompt',
releaseGroup: createReleaseGroup('independent'),
});
expect(readJson(tree, 'libs/my-lib/package.json'))
.toMatchInlineSnapshot(`
{
"name": "my-lib",
"version": "4.5.6",
}
`);
expect(
readJson(tree, 'libs/project-with-dependency-on-my-pkg/package.json')
).toMatchInlineSnapshot(`
{
"dependencies": {
"my-lib": "*",
},
"name": "project-with-dependency-on-my-pkg",
"version": "4.5.6",
}
`);
expect(
readJson(
tree,
'libs/project-with-devDependency-on-my-pkg/package.json'
)
).toMatchInlineSnapshot(`
{
"devDependencies": {
"my-lib": "*",
},
"name": "project-with-devDependency-on-my-pkg",
"version": "4.5.6",
}
`);
});
it(`should update dependents even when filtering to a subset of projects which do not include those dependents`, async () => { it(`should update dependents even when filtering to a subset of projects which do not include those dependents`, async () => {
expect(readJson(tree, 'libs/my-lib/package.json').version).toEqual( expect(readJson(tree, 'libs/my-lib/package.json').version).toEqual(
'0.0.1' '0.0.1'

View File

@ -372,6 +372,12 @@ To fix this you will either need to add a package.json file at that location, or
'package.json' 'package.json'
), ),
(json) => { (json) => {
// Do not update "*" as it already matches all possible versions including the new one
if (
json[dependentProject.dependencyCollection][packageName] === '*'
) {
return json;
}
json[dependentProject.dependencyCollection][packageName] = json[dependentProject.dependencyCollection][packageName] =
newVersion; newVersion;
return json; return json;