Skip to content

Commit bf301be

Browse files
authored
Merge pull request #8 from Arcanemagus/check-latest-versions
Ensure latest peerDependencies are checked
2 parents 592cbb3 + 9e6417a commit bf301be

File tree

1 file changed

+32
-30
lines changed

1 file changed

+32
-30
lines changed

check-peer-deps.js

+32-30
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ const DEBUG = false;
77
// Include development packages when checking whether a peerDependency has been
88
// satisfied.
99
const INCLUDE_DEV = true;
10-
// Use the local package.json files or check NPM to determine the peerDependencies
11-
const USE_LOCAL_PEERDEPS = true;
1210

1311
// Internal vars
1412
const deps = new Map();
@@ -52,29 +50,33 @@ const getNpmVersions = async () => {
5250

5351
// Grab the versions from NPM
5452
return Promise.all(Array.from(toCheck.values()).map(async (name) => {
55-
if (deps.has(name)) {
53+
if (deps.has(name) && !npmVers.has(name)) {
5654
await gatherNpmVer(deps.get(name), name);
5755
}
5856
}));
5957
};
6058

61-
// Get the peerDependencies
62-
const getNpmPeerDep = async (range, name) => {
63-
log(`Getting peerDependencies for ${name}`);
64-
const opts = ['view', '--json', name, 'peerDependencies'];
65-
const npmPeerDeps = JSON.parse(await exec('npm', opts));
59+
const addPeerDeps = (name, peerDependencies) => {
6660
if (!peerDeps.has(name)) {
6761
peerDeps.set(name, new Map());
6862
}
6963
const currDeps = peerDeps.get(name);
70-
Object.entries(npmPeerDeps).forEach((entry) => {
64+
Object.entries(peerDependencies).forEach((entry) => {
7165
const [depName, depRange] = entry;
72-
log(`${depName}@${depRange}`);
66+
log(`${name} peerDependency: ${depName}@${depRange}`);
7367
currDeps.set(depName, depRange);
7468
});
7569
};
7670

77-
const getLocalPeerDep = async (range, name) => {
71+
// Get the peerDependencies
72+
const getNpmPeerDep = async (range, name) => {
73+
log(`Getting NPM peerDependencies for ${name}`);
74+
const opts = ['view', '--json', name, 'peerDependencies'];
75+
const npmPeerDeps = JSON.parse(await exec('npm', opts));
76+
addPeerDeps(name, npmPeerDeps);
77+
};
78+
79+
const getPeerDep = async (range, name) => {
7880
log(`Getting peerDependencies for ${name}`);
7981
let packageInfo;
8082
try {
@@ -87,30 +89,24 @@ const getLocalPeerDep = async (range, name) => {
8789
if (!packageInfo.peerDependencies) {
8890
return;
8991
}
90-
if (!peerDeps.has(name)) {
91-
peerDeps.set(name, new Map());
92+
93+
if (!npmVers.has(name)) {
94+
await gatherNpmVer(range, name);
95+
}
96+
if (semver.lt(packageInfo.version, npmVers.get(name).maximum)) {
97+
// The installed version isn't the highest allowed, check the latest from NPM
98+
log(`${name}: Installed version lower than allowed version. Using NPM to determine peerDependencies.`);
99+
await getNpmPeerDep(range, name);
100+
} else {
101+
log(`${name}: Using local package.json's to determine peerDependencies.`);
102+
addPeerDeps(name, packageInfo.peerDependencies);
92103
}
93-
const currDeps = peerDeps.get(name);
94-
Object.entries(packageInfo.peerDependencies).forEach((entry) => {
95-
const [depName, depRange] = entry;
96-
log(`${depName}@${depRange}`);
97-
currDeps.set(depName, depRange);
98-
});
99104
};
100105

101106
const getPeerDeps = async () => {
102107
const promises = [];
103-
if (USE_LOCAL_PEERDEPS) {
104-
log("Using local package.json's to determine peerDependencies.");
105-
} else {
106-
log('Using NPM to determine peerDependencies.');
107-
}
108108
deps.forEach((range, name) => {
109-
if (USE_LOCAL_PEERDEPS) {
110-
promises.push(getLocalPeerDep(range, name));
111-
} else {
112-
promises.push(getNpmPeerDep(range, name));
113-
}
109+
promises.push(getPeerDep(range, name));
114110
});
115111
return Promise.all(promises);
116112
};
@@ -167,15 +163,21 @@ async function checkPeerDeps() {
167163
log('Dependencies:');
168164
deps.forEach((range, name) => { log(`${name}: ${range}`); });
169165

166+
log('');
167+
170168
log('Determining peerDependencies...');
171169
await getPeerDeps();
172170
log('Done.');
173171

172+
log('');
173+
174174
// Get the NPM versions required to check the peerDependencies
175-
log('Determining version ranges from NPM...');
175+
log('Determining peerDependency version ranges from NPM...');
176176
await getNpmVersions();
177177
log('Done.');
178178

179+
log('');
180+
179181
log('Checking versions...');
180182
await checkAllPeerDeps();
181183
log('Done.');

0 commit comments

Comments
 (0)