- Allow to configure multiple branches to release from - Allow to define a distribution channel associated with each branch - Manage the availability on distribution channels based on git merges - Support regular releases, maintenance releases and pre-releases - Add the `addChannel` plugin step to make an existing release available on a different distribution channel BREAKING CHANGE: the `branch` option has been removed in favor of `branches` The new `branches` option expect either an Array or a single branch definition. To migrate your configuration: - If you want to publish package from multiple branches, please the configuration documentation - If you use the default configuration and want to publish only from `master`: nothing to change - If you use the `branch` configuration and want to publish only from one branch: replace `branch` by `branches` (`"branch": "my-release-branch"` => `"branches": "my-release-branch"`)
24 lines
994 B
JavaScript
24 lines
994 B
JavaScript
const {isUndefined, uniqBy} = require('lodash');
|
|
const semver = require('semver');
|
|
const {isMaintenanceRange} = require('../utils');
|
|
|
|
const maintenance = {
|
|
filter: ({name, range}) => !isUndefined(range) || isMaintenanceRange(name),
|
|
branchValidator: ({range}) => (isUndefined(range) ? true : isMaintenanceRange(range)),
|
|
branchesValidator: branches => uniqBy(branches, ({range}) => semver.validRange(range)).length === branches.length,
|
|
};
|
|
|
|
const prerelease = {
|
|
filter: ({prerelease}) => !isUndefined(prerelease),
|
|
branchValidator: ({name, prerelease}) =>
|
|
Boolean(prerelease) && Boolean(semver.valid(`1.0.0-${prerelease === true ? name : prerelease}.1`)),
|
|
branchesValidator: branches => uniqBy(branches, 'prerelease').length === branches.length,
|
|
};
|
|
|
|
const release = {
|
|
filter: branch => !maintenance.filter(branch) && !prerelease.filter(branch),
|
|
branchesValidator: branches => branches.length <= 3 && branches.length > 0,
|
|
};
|
|
|
|
module.exports = {maintenance, prerelease, release};
|