Skip to content

Commit e1874c3

Browse files
committed
Fix some things
1 parent baecca4 commit e1874c3

File tree

6 files changed

+30
-8
lines changed

6 files changed

+30
-8
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ "releases": [{ "name": "@manypkg/cli", "type": "patch" }], "dependents": [] }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix checks not running
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ "releases": [{ "name": "@manypkg/cli", "type": "patch" }], "dependents": [] }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Improve the range chosen by the peer dev dep fixer

packages/cli/src/checks/INVALID_DEV_AND_PEER_DEPENDENCY_RELATIONSHIP.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { makeCheck, Workspace } from "./utils";
1+
import { makeCheck, Workspace, getHighestExternalRanges } from "./utils";
22
import { contains } from "sembear";
33

44
type ErrorType = {
@@ -7,31 +7,45 @@ type ErrorType = {
77
peerVersion: string;
88
dependencyName: string;
99
devVersion: string | null;
10+
idealDevVersion: string;
1011
};
1112

1213
export default makeCheck<ErrorType>({
1314
type: "all",
14-
validate: workspace => {
15+
validate: (workspace, allWorkspaces) => {
1516
let errors: ErrorType[] = [];
1617
let peerDeps = workspace.config.peerDependencies;
1718
let devDeps = workspace.config.devDependencies || {};
1819
if (peerDeps) {
1920
for (let depName in peerDeps) {
2021
if (!devDeps[depName]) {
22+
let highestRanges = getHighestExternalRanges(allWorkspaces);
23+
let idealDevVersion = highestRanges.get(depName);
24+
if (idealDevVersion === undefined) {
25+
idealDevVersion = peerDeps[depName];
26+
}
27+
2128
errors.push({
2229
type: "INVALID_DEV_AND_PEER_DEPENDENCY_RELATIONSHIP",
2330
workspace,
2431
peerVersion: peerDeps[depName],
2532
dependencyName: depName,
26-
devVersion: null
33+
devVersion: null,
34+
idealDevVersion
2735
});
2836
} else if (!contains(peerDeps[depName], devDeps[depName])) {
37+
let highestRanges = getHighestExternalRanges(allWorkspaces);
38+
let idealDevVersion = highestRanges.get(depName);
39+
if (idealDevVersion === undefined) {
40+
idealDevVersion = peerDeps[depName];
41+
}
2942
errors.push({
3043
type: "INVALID_DEV_AND_PEER_DEPENDENCY_RELATIONSHIP",
3144
workspace,
3245
dependencyName: depName,
3346
peerVersion: peerDeps[depName],
34-
devVersion: devDeps[depName]
47+
devVersion: devDeps[depName],
48+
idealDevVersion
3549
});
3650
}
3751
}
@@ -42,9 +56,8 @@ export default makeCheck<ErrorType>({
4256
if (!error.workspace.config.devDependencies) {
4357
error.workspace.config.devDependencies = {};
4458
}
45-
error.workspace.config.devDependencies[
46-
error.dependencyName
47-
] = error.workspace.config.peerDependencies![error.dependencyName];
59+
error.workspace.config.devDependencies[error.dependencyName] =
60+
error.idealDevVersion;
4861
return { requiresInstall: true };
4962
},
5063
print: error => {

packages/cli/src/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ let runChecks = (
5454
}
5555
}
5656
}
57+
return { requiresInstall, hasErrored };
5758
};
5859

5960
(async () => {
@@ -81,7 +82,11 @@ let runChecks = (
8182
workspaces.map(x => [x.name, x])
8283
);
8384
workspacesByName.set(rootWorkspace.name, rootWorkspace);
84-
85+
let { hasErrored, requiresInstall } = runChecks(
86+
workspacesByName,
87+
rootWorkspace,
88+
shouldFix
89+
);
8590
if (shouldFix) {
8691
await Promise.all(
8792
[...workspacesByName].map(async ([pkgName, workspace]) => {

0 commit comments

Comments
 (0)