monorepo-next
Version:
Detach monorepo packages from normal linking
68 lines (55 loc) • 1.62 kB
JavaScript
const {
getWorkspaceCwd,
} = require('./git');
const buildDepGraph = require('./build-dep-graph');
const buildChangeGraph = require('./build-change-graph');
const buildReleaseGraph = require('./build-release-graph');
const semver = require('semver');
const { builder } = require('../bin/commands/release');
async function getNewVersions({
cwd = process.cwd(),
shouldBumpInRangeDependencies = builder['bump-in-range-dependencies'].default,
shouldInheritGreaterReleaseType = builder['inherit-greater-release-type'].default,
shouldExcludeDevChanges = builder['exclude-dev-changes'].default,
shouldValidateDependencyVisibility = builder['validate-dependency-visibility'].default,
fromCommit,
sinceBranch,
cached,
}) {
let workspaceCwd = await getWorkspaceCwd(cwd);
let workspaceMeta = await buildDepGraph({ workspaceCwd });
let packagesWithChanges = await buildChangeGraph({
workspaceMeta,
shouldExcludeDevChanges,
fromCommit,
sinceBranch,
cached,
});
let releaseTrees = await buildReleaseGraph({
packagesWithChanges,
shouldBumpInRangeDependencies,
shouldInheritGreaterReleaseType,
shouldExcludeDevChanges,
shouldValidateDependencyVisibility,
});
let newVersions = {};
for (let {
name,
shouldBumpVersion,
oldVersion,
releaseType,
} of releaseTrees) {
if (!shouldBumpVersion) {
continue;
}
let newVersion = semver.inc(oldVersion, releaseType);
newVersions[name] = {
oldVersion,
releaseType,
newVersion,
};
}
return newVersions;
}
module.exports = getNewVersions;
;