feat(release)!: useLegacyVersioning is false by default, migrate config #30838
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR updates
nx release
to use the revamped versioning implementation by default. It also updates and adds relevant documentation, and provides an automated migration for the new configuration structure.For anyone exclusively versioning TS/JS packages, there should be no real difference to your experience (although a number of bugs have been fixed and new features around updating multiple
package.json
files at once are now available to you with this change).For the lifecycle of Nx v21,
release.version.useLegacyVersioning
will remain as a option that can be set totrue
to revert to the old behavior and configuration structure.NOTE: This should only be a temporary solution, for example if one of the plugins you use does provide a
VersionActions
based versioning implementation yet. The option and legacy implementation will be removed entirely in Nx v22 (in ~6 months).BREAKING CHANGE:
VersionActions
in Nx 20.8 when it was opt-in, there are breaking changes to the abstract class here as well.manifestRootsToUpdate
has gone fromstring[]
tomanifestsToUpdate: { manifestPath: string; preserveLocalDependencyProtocols: boolean; }[]
to support controlling the local dependency updates per manifest in order to support advanced source vs dist scenarios, and correspondinglyisLocalDependencyProtocol
has been removed from the abstract class and the method will no longer be called from the core logic. It should be thought of as an implementation detail ofupdateProjectDependencies
instead.