microsoft / microsoft/beachball

Tools for managing the package lifecycle

Open
#360 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

feature
Dominant language
TypeScript
Stars
815
Forks
93
Avg merge
2d 13h
Merged PRs (30d)
12

Description

Motivation

The feature "support for the dedicated release branch flow" will require support for package management in Beachball. Version and changelog updates must be managed when altering package structure. If Beachball is not aware of the package lifecycle, changelogs and versions on the release branch may be lost or left in the orphan state.

Proposal

Following package operations must be supported:

  • Deleting a package
  • Renaming a package
  • Merging two or more packages
  • Splitting a package into two or more packages

Deleting a package

On package deletion, version bumping must also delete the changelog from the release branch. Change file:

"delete": true,

Rename package

On version bump, the package must be moved from old to new package name in the release branch. Version level is patch iterated from the original branch. Change file:

"renameFrom": "@contoso/logToScreen",

Merging packages

Rename existing changelogs into: CHANGELOG_.json|md . Example: + CHANGELOG_logger.json . Highest version from merged packages is patch level iterated. Change file:

"mergedFrom": ["@contoso/logToScreen", "@contoso/logToConsole"],

Splitting package

Copy changelog into new packages. A version from the original package is patch level iterated. Change file:

"splitFrom": ["@contoso/logToScreen"]

Indicating change

Add option to beachball change command for the four lifecycle events, rename, delete, merge, and split. Example: beachball change delete <package name> . This will cause beachball change to add JSON options listed above.

cc: @khovik, @VincentBailly, @bweggersen

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the beachball change command and the dedicated release branch flow described in issue 361. Trace how change files and changelogs are handled, then verify that rename, delete, merge, and split operations produce the specified options and preserve the required versions and changelogs.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, typescript
Domain
build-system, cli, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.