32 lines
783 B
JavaScript
32 lines
783 B
JavaScript
export default async function (packages) { // eslint-disable-line require-yield
|
|
let foundDeps = {};
|
|
let foundDuplicated = false;
|
|
let duplicatedPackages = {};
|
|
|
|
function checkDep(name) {
|
|
if (name.indexOf("babel-") === 0 && foundDeps[name]) {
|
|
foundDuplicated = true;
|
|
duplicatedPackages[name] = (duplicatedPackages[name] || 0) + 1;
|
|
}
|
|
|
|
foundDeps[name] = true;
|
|
}
|
|
|
|
for (let pkg of packages) {
|
|
checkDep(pkg.name);
|
|
}
|
|
|
|
if (foundDuplicated) {
|
|
let msg = "Found these duplicate packages:\n\n";
|
|
|
|
for (let name in duplicatedPackages) {
|
|
msg += `- ${name} x ${duplicatedPackages[name]}\n`;
|
|
}
|
|
|
|
msg += "\nRecommend running `npm dedupe`";
|
|
return [false, msg];
|
|
} else {
|
|
return [true, "No duplicate babel packages found"];
|
|
}
|
|
}
|