Skip to content

Commit 0452ce8

Browse files
committed
chore: fix devDependency redundancy check
1 parent 0ec28cc commit 0452ce8

File tree

1 file changed

+35
-26
lines changed

1 file changed

+35
-26
lines changed

utils/check_package_version_consistency.js

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ const fs = require("fs");
44

55
const doDebug = false;
66
async function main() {
7-
const dependencies = {};
7+
const allDependencies = {};
8+
const devDependencies = {};
89

910
async function exploreModule(folderPath) {
1011
const folder = path.basename(folderPath);
@@ -15,14 +16,23 @@ async function main() {
1516
console.log("exploring ", folderPath);
1617
}
1718
const packageJson = JSON.parse(await fs.promises.readFile(packageFilename, "utf8"));
18-
if (packageJson.dependencies || packageJson.devDependencies) {
19-
const modules = Object.entries(packageJson.dependencies || []).concat(
20-
Object.entries(packageJson.devDependencies || [])
21-
);
22-
for (const [moduleName, version] of modules) {
23-
dependencies[moduleName] = dependencies[moduleName] || {};
24-
dependencies[moduleName][version] = dependencies[moduleName][version] || [];
25-
dependencies[moduleName][version].push(folder);
19+
for (const [modules, isDevDependencies] of [
20+
[packageJson.dependencies ?? {}, false],
21+
[packageJson.devDependencies ?? {}, true],
22+
]) {
23+
const dependencyCollections = [allDependencies];
24+
25+
// devDependencies are recorded a second time for a redundancy check
26+
if (isDevDependencies) {
27+
dependencyCollections.push(devDependencies);
28+
}
29+
30+
for (const [moduleName, version] of Object.entries(modules)) {
31+
for (const dependencyCollection of dependencyCollections) {
32+
dependencyCollection[moduleName] ??= {};
33+
dependencyCollection[moduleName][version] ??= [];
34+
dependencyCollection[moduleName][version].push(folder);
35+
}
2636
}
2737
if (doDebug) {
2838
console.log(folder);
@@ -48,22 +58,25 @@ async function main() {
4858

4959
let nbErrors = 0;
5060
// finding the packages that are present with multiple versions
51-
for (const [module, versionPackages] of Object.entries(dependencies)) {
52-
const versions = Object.keys(versionPackages);
53-
if (versions.length !== 1) {
54-
console.log("Warning module ", module, " has multiple versions ", versions.join(" "));
55-
console.log(versionPackages);
56-
nbErrors++;
61+
for (const collectedDepedencies of [allDependencies, devDependencies]) {
62+
for (const [module, versionPackages] of Object.entries(collectedDepedencies)) {
63+
const versions = Object.keys(versionPackages);
64+
if (versions.length !== 1) {
65+
console.log("Warning module ", module, " has multiple versions ", versions.join(" "));
66+
console.log(versionPackages);
67+
nbErrors++;
68+
}
5769
}
5870
}
5971
if (nbErrors > 0) {
6072
console.log(" => Please fix the error above first and rerun");
6173
process.exit(1);
6274
}
6375

76+
// Check for redundant devDependencies and exit with error if there is a duplicate
6477
const oftenUsedPackages = [];
6578
const rarelyUsedPackages = [];
66-
for (const [module, versionPackages] of Object.entries(dependencies)) {
79+
for (const [module, versionPackages] of Object.entries(devDependencies)) {
6780
if (module.match(/^@node-wot/)) {
6881
continue;
6982
}
@@ -82,20 +95,16 @@ async function main() {
8295
}
8396
}
8497

85-
console.log("Good ! the version number of all modules used are all consistent !");
86-
87-
const displayOftenUsedPackages = false;
88-
if (displayOftenUsedPackages) {
89-
// ---
90-
console.log("\nSuggestion: now you can manually update the devDependencies section of the main package.json");
91-
console.log(
92-
"with the following packages. Those packages are installed more than once in one of the sub modules"
93-
);
94-
98+
if (oftenUsedPackages.length > 0) {
99+
console.log("The following packages are installed more than once.");
100+
console.log("Please move them manually to the devDependencies section of the main package.json.");
95101
console.log("-----------\n");
96102

97103
console.log(oftenUsedPackages.sort().join("\n"));
104+
process.exit(1);
98105
}
106+
107+
console.log("Good! The version numbers of all modules used are consistent.");
99108
process.exit(0);
100109
}
101110

0 commit comments

Comments
 (0)