diff --git a/yarn.config.cjs b/yarn.config.cjs index 0d3713a4..f9ec7d43 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -613,10 +613,23 @@ function expectUpToDateWorkspacePeerDependencies(Yarn, workspace) { dependency.range, ) ) { + // Ensure peer dependency includes latest breaking changes. + // + // Technically pre-1.0 versions can make breaking changes in patch releases, but + // conventionally we always bump the most significant digit for breaking changes. + let peerDependencyRange; + if (dependencyWorkspaceVersion.major > 0) { + peerDependencyRange = `^${dependencyWorkspaceVersion.major}.0.0`; + } else if (dependencyWorkspaceVersion.minor > 0) { + peerDependencyRange = `^0.${dependencyWorkspaceVersion.minor}.0`; + } else { + peerDependencyRange = `^0.0.${dependencyWorkspaceVersion.patch}`; + } + expectWorkspaceField( workspace, `peerDependencies["${dependency.ident}"]`, - `^${dependencyWorkspaceVersion.major}.0.0`, + peerDependencyRange, ); } }