npm-ws-tools
Version:
Command line tools for working with npm workspaces. Includes version bumping and dependencies version update
61 lines • 1.87 kB
JavaScript
export function bumpVersions(root, version, depMod) {
if (depMod === undefined) {
depMod = "^";
}
if (!version) {
const versions = root.content.managed_versions;
version = versions.bump;
}
if (!version) {
version = "minor"; // default bump strategy
}
if (!root.isRoot) {
console.log("Not a root package: " + root.file);
process.exit(1);
}
const workspaces = root.projects;
const versionsMap = {};
for (const ws of workspaces) {
ws.version = version;
versionsMap[ws.name] = depMod + ws.version;
}
root.version = version;
if (!root.isPnpmRoot) { // pnpm uses workspace:*
for (const ws of [root, ...workspaces]) {
updateAllDepsVersions(ws, versionsMap);
}
}
for (const ws of workspaces) {
ws.save();
}
root.save();
}
function updateAllDepsVersions(pkg, versionsMap) {
updateDepsVersions(pkg, versionsMap, "dependencies");
updateDepsVersions(pkg, versionsMap, "devDependencies");
updateDepsVersions(pkg, versionsMap, "optionalDependencies");
updateDepsVersions(pkg, versionsMap, "peerDependencies");
updateDepsVersions(pkg, versionsMap, "bundleDependencies");
}
function updateDepsVersions(pkg, versionsMap, depsKey) {
const deps = pkg.content[depsKey];
if (deps) {
for (const dep in deps) {
if (versionsMap[dep]) {
deps[dep] = versionsMap[dep];
}
}
}
}
export function updateDependencies(root, versionsMap) {
if (!root.isRoot) {
console.log("Not a root package: " + root.file);
process.exit(1);
}
const workspaces = root.projects;
for (const ws of [root, ...workspaces]) {
updateAllDepsVersions(ws, versionsMap);
ws.save();
}
}
//# sourceMappingURL=bump.js.map