upgrade-dependents
Version:
A utility to upgrade package dependents
50 lines (49 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsonFilePlus = require("json-file-plus");
const pLimit = require("p-limit");
const path = require("path");
const createRange_1 = require("./createRange");
const getDependencyRange_1 = require("./getDependencyRange");
const getDesignationProperty_1 = require("./getDesignationProperty");
const logs = require("./logs");
const limit = pLimit(20);
async function upgradePackage(options) {
const { workingPackageMeta, dependentPackageInfo, dryRun, force, logger } = options;
const { name: dependencyName, version: newVersion } = workingPackageMeta;
const { location, meta } = dependentPackageInfo;
const oldRange = getDependencyRange_1.getDependencyRange(dependencyName, meta);
const newRange = force ? `^${newVersion}` : createRange_1.createRange(oldRange, newVersion);
const packageJsonPath = path.join(location, "package.json");
const property = getDesignationProperty_1.getDesignationProperty(dependencyName, meta);
if (!property) {
throw new Error("Dependency not found.");
}
const file = await jsonFilePlus(packageJsonPath);
file.set({
[property]: {
[dependencyName]: newRange
}
});
if (!dryRun) {
await file.save();
}
logger.log(logs.packageUpgraded(meta, dependencyName, newRange));
}
function upgradePackages(options) {
const { workingPackageMeta, packageInfos, dryRun, force, logger } = options;
if (dryRun) {
logger.log(logs.upgradeDryRun());
}
const operations = packageInfos.map(dependentPackageInfo => {
return limit(() => upgradePackage({
dependentPackageInfo,
dryRun,
force,
logger,
workingPackageMeta
}));
});
return Promise.all(operations);
}
exports.upgradePackages = upgradePackages;