lerna
Version:
Lerna is a fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages from the same repository
44 lines (41 loc) • 1.37 kB
JavaScript
import {
npmlog_default
} from "./chunk-WC2B4V4E.js";
// libs/commands/version/src/lib/update-lockfile-version.ts
import { writeJsonFile } from "@nx/devkit";
import loadJsonFile from "load-json-file";
import path from "path";
async function updateLockfileVersion(pkg) {
const lockfilePath = path.join(pkg.location, "package-lock.json");
const obj = await loadJsonFile(lockfilePath).catch(() => {
npmlog_default.verbose("version", `${pkg.name} has no lockfile. Skipping lockfile update.`);
});
if (!obj) {
return;
}
obj.version = pkg.version;
if (obj.packages && obj.packages[""]) {
obj.packages[""].version = pkg.version;
if (obj.packages[""].dependencies) {
const updatedPkgDependencies = Object.keys(obj.packages[""].dependencies).reduce(
(prev, next) => ({ ...prev, [next]: pkg.dependencies?.[next] }),
{}
);
obj.packages[""].dependencies = updatedPkgDependencies;
}
if (obj.packages[""].devDependencies) {
const updatedPkgDevDependencies = Object.keys(obj.packages[""].devDependencies).reduce(
(prev, next) => ({ ...prev, [next]: pkg.devDependencies?.[next] }),
{}
);
obj.packages[""].devDependencies = updatedPkgDevDependencies;
}
}
writeJsonFile(lockfilePath, obj, {
spaces: 2
});
return lockfilePath;
}
export {
updateLockfileVersion
};