- 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"`)
19 lines
583 B
JavaScript
19 lines
583 B
JavaScript
const {isString, remove, omit, mapValues, template} = require('lodash');
|
|
const micromatch = require('micromatch');
|
|
const {getBranches} = require('../git');
|
|
|
|
module.exports = async ({cwd}, branches) => {
|
|
const gitBranches = await getBranches({cwd});
|
|
|
|
return branches.reduce(
|
|
(branches, branch) => [
|
|
...branches,
|
|
...remove(gitBranches, name => micromatch(gitBranches, branch.name).includes(name)).map(name => ({
|
|
name,
|
|
...mapValues(omit(branch, 'name'), value => (isString(value) ? template(value)({name}) : value)),
|
|
})),
|
|
],
|
|
[]
|
|
);
|
|
};
|