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 to `true` 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:
**⚠️ For any early adopters of `VersionActions` in Nx 20.8 when it was
opt-in, there are breaking changes to the abstract class here as well.**
`manifestRootsToUpdate` has gone from `string[]` to `manifestsToUpdate:
{ manifestPath: string; preserveLocalDependencyProtocols: boolean; }[]`
to support controlling the local dependency updates per manifest in
order to support advanced source vs dist scenarios, and correspondingly
`isLocalDependencyProtocol` 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 of `updateProjectDependencies`
instead.
@nx/devkit
The Nx Devkit is the underlying technology used to customize Nx to support different technologies and custom use-cases. It contains many utility functions for reading and writing files, updating configuration, working with Abstract Syntax Trees(ASTs), and more.
As with most things in Nx, the core of Nx Devkit is very simple. It only uses language primitives and immutable objects (the tree being the only exception).
Table of contents
Enumerations
Classes
Interfaces
- CreateDependenciesContext
- CreateNodesContext
- CreateNodesContextV2
- CreateNodesResult
- DefaultTasksRunnerOptions
- ExecutorContext
- ExecutorsJson
- FileChange
- FileData
- FileMap
- GeneratorsJson
- GraphJson
- Hash
- HasherContext
- ImplicitJsonSubsetDependency
- JsonParseOptions
- JsonSerializeOptions
- MigrationsJson
- NxAffectedConfig
- NxJsonConfiguration
- ProjectConfiguration
- ProjectFileMap
- ProjectGraph
- ProjectGraphDependency
- ProjectGraphExternalNode
- ProjectGraphProjectNode
- ProjectsConfigurations
- RemoteCache
- StringDeletion
- StringInsertion
- Target
- TargetConfiguration
- TargetDependencyConfig
- Task
- TaskGraph
- TaskHasher
- TaskResult
- Tree
- Workspace
Type Aliases
- AsyncIteratorExecutor
- CreateDependencies
- CreateMetadata
- CreateMetadataContext
- CreateNodes
- CreateNodesFunction
- CreateNodesFunctionV2
- CreateNodesResultV2
- CreateNodesV2
- CustomHasher
- DynamicDependency
- Executor
- ExpandedPluginConfiguration
- Generator
- GeneratorCallback
- Hasher
- ImplicitDependency
- ImplicitDependencyEntry
- NxPlugin
- NxPluginV2
- PackageManager
- PluginConfiguration
- PostTasksExecution
- PostTasksExecutionContext
- PreTasksExecution
- PreTasksExecutionContext
- ProjectType
- ProjectsMetadata
- PromiseExecutor
- RawProjectGraphDependency
- StaticDependency
- StringChange
- TargetDefaults
- TaskGraphExecutor
- TaskResults
- ToJSOptions
- WorkspaceJsonConfiguration
Variables
- NX_VERSION: string
- cacheDir: string
- logger: Object
- output: CLIOutput
- workspaceRoot: string
Functions
- addDependenciesToPackageJson
- addProjectConfiguration
- applyChangesToString
- convertNxExecutor
- convertNxGenerator
- createNodesFromFiles
- createProjectFileMapUsingProjectGraph
- createProjectGraphAsync
- defaultTasksRunner
- detectPackageManager
- ensurePackage
- extractLayoutDirectory
- formatFiles
- generateFiles
- getOutputsForTargetAndConfiguration
- getPackageManagerCommand
- getPackageManagerVersion
- getProjects
- getWorkspaceLayout
- glob
- globAsync
- hashArray
- installPackagesTask
- isDaemonEnabled
- isWorkspacesEnabled
- joinPathFragments
- moveFilesToNewDirectory
- names
- normalizePath
- offsetFromRoot
- parseJson
- parseTargetString
- readCachedProjectGraph
- readJson
- readJsonFile
- readNxJson
- readProjectConfiguration
- readProjectsConfigurationFromProjectGraph
- readTargetOptions
- removeDependenciesFromPackageJson
- removeProjectConfiguration
- reverse
- runExecutor
- runTasksInSerial
- serializeJson
- stripIndents
- stripJsonComments
- targetToTargetString
- toJS
- updateJson
- updateNxJson
- updateProjectConfiguration
- updateTsConfigsToJs
- validateDependency
- visitNotIgnoredFiles
- workspaceLayout
- writeJson
- writeJsonFile