diff --git a/yarn.config.cjs b/yarn.config.cjs index a2e0428f09..e52a047a7b 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -714,6 +714,24 @@ function expectControllerDependenciesListedAsPeerDependencies( } } +function getInconsistentDependenciesAndDevDependencies(dependencyIdent, dependenciesByRange) { + const ALLOWED_INCONSISTENT_DEPENDENCIES = Object.entries({ + // '@metamask/foo': ['^1.0.0'], + }); + for (const [allowedPackage, ignoredRange] of ALLOWED_INCONSISTENT_DEPENDENCIES) { + if (allowedPackage === dependencyIdent) { + return new Map( + Object.entries( + dependenciesByRange + ).filter( + ([range]) => !ignoredRange.includes(range) + ) + ) + } + } + return dependenciesByRange; +} + /** * Expect that all version ranges in `dependencies` and `devDependencies` for * the same dependency across the entire monorepo are the same. As it is @@ -732,9 +750,11 @@ function expectConsistentDependenciesAndDevDependencies(Yarn) { dependencyIdent, dependenciesByRange, ] of nonPeerDependenciesByIdent.entries()) { - const dependencyRanges = [...dependenciesByRange.keys()].sort(); + const dependenciesToConsider = + getInconsistentDependenciesAndDevDependencies(dependencyIdent, dependenciesByRange); + const dependencyRanges = [...dependenciesToConsider.keys()].sort(); if (dependenciesByRange.size > 1) { - for (const dependencies of dependenciesByRange.values()) { + for (const dependencies of dependenciesToConsider.values()) { for (const dependency of dependencies) { dependency.error( `Expected version range for ${dependencyIdent} (in ${