nx Migrations
The @nx/nx plugin provides various migrations to help you migrate to newer versions of nx projects within your Nx workspace. Below is a complete reference for all available migrations.
22.1.x
Section titled “22.1.x”22-1-0-update-nx-wrapper
Section titled “22-1-0-update-nx-wrapper”Version: 22.1.0-beta.5
Updates the nx wrapper.
22.0.x
Section titled “22.0.x”22-0-0-release-version-config-changes
Section titled “22-0-0-release-version-config-changes”Version: 22.0.0-beta.1
Updates release version config based on the breaking changes in Nx v22
22-0-0-consolidate-release-tag-config
Section titled “22-0-0-consolidate-release-tag-config”Version: 22.0.0-beta.2
Consolidates releaseTag* options into nested releaseTag object structure
21.0.x
Section titled “21.0.x”remove-legacy-cache
Section titled “remove-legacy-cache”Version: 21.0.0-beta.8
Removes the legacy cache configuration from nx.json
Use Legacy Cache
Section titled “Use Legacy Cache”Removes useLegacyCache from nx.json as it is no longer functional in Nx 21
Sample Code Changes
Section titled “Sample Code Changes”Before
Section titled “Before”{ "targetDefaults": {}, "useLegacyCache": true}{ "targetDefaults": {}}remove-custom-tasks-runner
Section titled “remove-custom-tasks-runner”Version: 21.0.0-beta.8
Removes the legacy cache configuration from nx.json
Remove Custom Tasks Runners
Section titled “Remove Custom Tasks Runners”Removes tasksRunnerOptions entries from nx.json that contain custom tasks runners. In Nx 21, custom tasks runners are no longer functional. See /deprecated/custom-tasks-runner for more information.
Sample Code Changes
Section titled “Sample Code Changes”Removes custom task runner configuration from nx.json.
Before
Section titled “Before”{ "targetDefaults": {}, "tasksRunnerOptions": { "default": { "runner": "custom-task-runner" } }}{ "targetDefaults": {}}release-version-config-changes
Section titled “release-version-config-changes”Version: 21.0.0-beta.11
Updates release version config based on the breaking changes in Nx v21
Nx Release Version Config Changes
Section titled “Nx Release Version Config Changes”In Nx v21, the implementation details of versioning were rewritten to massively enhance flexibility and lay the groundwork for future features.
As part of this, some elements of the release configuration were updated. During the lifecycle of Nx v21, you can still opt into the old versioning by setting release.version.useLegacyVersioning to true, in which case the release configuration should remain unchanged.
In Nx v22, the legacy versioning implementation will be removed entirely and the configuration will have to be updated to match what this migration does for you.
Sample Code Changes
Section titled “Sample Code Changes”“generatorOptions” is longer exists and most non-ecosystem specific options have moved to the top level of “version” and are therefore fully documented on the JSON schema as a core option.
“packageRoot: string” has been replaced by the more flexible concept of “manifestRootsToUpdate: string[]”, allowing for multiple manifest files (such as package.json in the JS/TS ecosystem)
to be updated in a single versioning run.
Ecosystem specific options, such as “skipLockFileUpdate”, which is specific to the JS/TS ecosystem, are available via the new “versionActionsOptions” object, which is so named because of the new VersionActions abstraction introduced in Nx v21,
which allows for different ecosystems and use-cases to be supported via very minimal implementation effort.
“preserveLocalDependencyProtocols” changed from false by default to true by default in Nx v21, so it can simply be removed from the configuration when set to true.
The migration will also update release groups version configuration, as well as project.json and package.json version configuration, if applicable.
Before
Section titled “Before”{ "release": { "version": { "generatorOptions": { "packageRoot": "build/packages/{projectName}", "currentVersionResolver": "registry", "skipLockFileUpdate": true, "preserveLocalDependencyProtocols": true } } }}{ "release": { "version": { "manifestRootsToUpdate": ["build/packages/{projectName}"], "currentVersionResolver": "registry", "versionActionsOptions": { "skipLockFileUpdate": true } } }}release-changelog-config-changes
Section titled “release-changelog-config-changes”Version: 21.0.0-beta.11
Updates release changelog config based on the breaking changes in Nx v21
Nx Release Changelog Config Changes
Section titled “Nx Release Changelog Config Changes”In Nx v21, the mapAuthorsToGitHubUsernames changelog “renderOption” for the default changelog renderer was renamed to applyUsernameToAuthors to reflect the fact that it is no longer specific to GitHub. Most people were not setting this option directly, but if you were, it will be automatically migrated by this migration.
The migration will also update release groups changelog configuration, if applicable.
Sample Code Changes
Section titled “Sample Code Changes”Before
Section titled “Before”{ "release": { "changelog": { "workspaceChangelog": { "renderOptions": { "mapAuthorsToGitHubUsernames": true } }, "projectChangelogs": { "renderOptions": { "mapAuthorsToGitHubUsernames": false } } } }}{ "release": { "changelog": { "workspaceChangelog": { "renderOptions": { "applyUsernameToAuthors": true } }, "projectChangelogs": { "renderOptions": { "applyUsernameToAuthors": false } } } }}20.0.x
Section titled “20.0.x”move-use-daemon-process
Section titled “move-use-daemon-process”Version: 20.0.0-beta.7
Migration for v20.0.0-beta.7
Move useDaemonProcess
Section titled “Move useDaemonProcess”Move the useDaemonProcess to the root of nx.json
Sample Code Changes
Section titled “Sample Code Changes”Before
Section titled “Before”{ "tasksRunnerOptions": { "default": { "options": { "useDaemonProcess": false } } }}{ "useDaemonProcess": false}use-legacy-cache
Section titled “use-legacy-cache”Version: 20.0.1
Set useLegacyCache to true for migrating workspaces
Use Legacy Cache
Section titled “Use Legacy Cache”Set useLegacyCache to true for migrating workspaces
Sample Code Changes
Section titled “Sample Code Changes”Add useLegacyCache to nx.json unless enableDbCache was set to true.
Before
Section titled “Before”{ "targetDefaults": {}}{ "targetDefaults": {}, "useLegacyCache": true}19.2.x
Section titled “19.2.x”19-2-0-move-graph-cache-directory
Section titled “19-2-0-move-graph-cache-directory”Version: 19.2.0-beta.2
Updates the default workspace data directory to .nx/workspace-data
19-2-2-update-nx-wrapper
Section titled “19-2-2-update-nx-wrapper”Version: 19.2.2-beta.0
Updates the nx wrapper.
19-2-4-set-project-name
Section titled “19-2-4-set-project-name”Version: 19.2.4-beta.0
Set project name in nx.json explicitly
18.1.x
Section titled “18.1.x”move-default-base-to-nx-json-root
Section titled “move-default-base-to-nx-json-root”Version: 18.1.0-beta.3
Moves affected.defaultBase to defaultBase in nx.json
18.0.x
Section titled “18.0.x”18.0.0-disable-adding-plugins-for-existing-workspaces
Section titled “18.0.0-disable-adding-plugins-for-existing-workspaces”Version: 18.0.0-beta.2
Updates nx.json to disabled adding plugins when generating projects in an existing Nx workspace
17.3.x
Section titled “17.3.x”17.3.0-update-nx-wrapper
Section titled “17.3.0-update-nx-wrapper”Version: 17.3.0-beta.6
Updates the nx wrapper.
17.0.x
Section titled “17.0.x”17.0.0-move-cache-directory
Section titled “17.0.0-move-cache-directory”Version: 17.0.0-beta.1
Updates the default cache directory to .nx/cache
Sample Code Changes
Section titled “Sample Code Changes”Add .nx/cache to the .gitignore file.
Before
Section titled “Before”node_modulesnode_modules.nx/cacheAdd .nx/cache to the .prettierignore file.
Before
Section titled “Before”/dist/dist.nx/cache17.0.0-use-minimal-config-for-tasks-runner-options
Section titled “17.0.0-use-minimal-config-for-tasks-runner-options”Version: 17.0.0-beta.3
Use minimal config for tasksRunnerOptions
rm-default-collection-npm-scope
Section titled “rm-default-collection-npm-scope”Version: 17.0.0-rc.1
Migration for v17.0.0-rc.1
16.8.x
Section titled “16.8.x”16.8.0-escape-dollar-sign-env
Section titled “16.8.0-escape-dollar-sign-env”Version: 16.8.0-beta.3
Escape $ in env variables
16.6.x
Section titled “16.6.x”16.6.0-prefix-outputs
Section titled “16.6.0-prefix-outputs”Version: 16.6.0-beta.6
Prefix outputs with {workspaceRoot}/{projectRoot} if needed
16.2.x
Section titled “16.2.x”16.2.0-remove-output-path-from-run-commands
Section titled “16.2.0-remove-output-path-from-run-commands”Version: 16.2.0-beta.0
Remove outputPath from run commands
16.0.x
Section titled “16.0.x”16.0.0-remove-nrwl-cli
Section titled “16.0.0-remove-nrwl-cli”Version: 16.0.0-beta.0
Remove @nrwl/cli.
16.0.0-tokens-for-depends-on
Section titled “16.0.0-tokens-for-depends-on”Version: 16.0.0-beta.9
Replace dependsOn.projects and inputs definitions with new configuration format.
16.0.0-update-nx-cloud-runner
Section titled “16.0.0-update-nx-cloud-runner”Version: 16.0.0-beta.0
Replace @nrwl/nx-cloud with nx-cloud