epd
Version:
Enhanced peer dependency resolution for npm, yarn, and pnpm
46 lines • 1.49 kB
JavaScript
import { execSync } from 'child_process';
export async function checkUpdates(packageJson) {
const updates = [];
const allDeps = {
...packageJson.dependencies,
...packageJson.devDependencies
};
for (const [pkg, version] of Object.entries(allDeps)) {
try {
const result = execSync(`npm view ${pkg} version`, {
encoding: 'utf-8',
stdio: ['pipe', 'pipe', 'ignore']
}).trim();
const current = version.replace(/[\^~]/, '');
const latest = result;
if (current !== latest) {
updates.push({
package: pkg,
current,
latest,
type: getUpdateType(current, latest),
breaking: isMajorUpdate(current, latest)
});
}
}
catch (error) {
// Skip packages that can't be checked
}
}
return updates;
}
function getUpdateType(current, latest) {
const [cMajor, cMinor] = current.split('.').map(Number);
const [lMajor, lMinor] = latest.split('.').map(Number);
if (lMajor > cMajor)
return 'major';
if (lMinor > cMinor)
return 'minor';
return 'patch';
}
function isMajorUpdate(current, latest) {
const cMajor = parseInt(current.split('.')[0]);
const lMajor = parseInt(latest.split('.')[0]);
return lMajor > cMajor;
}
//# sourceMappingURL=updater.js.map