npm-ws-tools
Version:
Command line tools for working with npm workspaces. Includes version bumping and dependencies version update
66 lines • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateDependencies = exports.bumpVersions = void 0;
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:* versions
for (const ws of [root, ...workspaces]) {
updateAllDepsVersions(ws, versionsMap);
}
for (const ws of workspaces) {
ws.save();
}
}
root.save();
}
exports.bumpVersions = bumpVersions;
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];
}
}
}
}
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();
}
}
exports.updateDependencies = updateDependencies;
//# sourceMappingURL=bump.js.map