Files
Craigory Coppola 94d9358e0a feat(core): add migrations for createNodesV2 -> createNodes rename (#35893)
## Current Behavior

#35386 renamed the canonical plugin API to drop the `V2` suffix — both
the exported `createNodesV2` **value** in first-party plugins (now
`createNodes`) and the `*V2` **types** in `@nx/devkit` (`CreateNodesV2`,
`CreateNodesContextV2`, `CreateNodesResultV2`, `CreateNodesFunctionV2`,
`NxPluginV2`). The old names are kept as deprecated aliases, so existing
code keeps compiling — but there is no migration to move workspaces onto
the canonical names, and `@nx/angular/plugin` / `@nx/vitest` only
re-exported `createNodesV2` from their public entry points (the rename
was incomplete there).

## Expected Behavior

- **Per-plugin value migration**
(`migrate-create-nodes-v2-to-create-nodes`): every first-party plugin
that publicly exposes `createNodesV2` ships a migration that rewrites
named imports/re-exports of `createNodesV2` from that plugin's public
specifier(s) to `createNodes` (22 plugins, incl. `@nx/gradle` +
`@nx/gradle/plugin-v1`, `@nx/js/typescript`, `@nx/react/router-plugin`).
- **devkit type migration** (`rename-create-nodes-v2-types`): rewrites
imports/re-exports of the deprecated `*V2` types from `@nx/devkit` to
their canonical names (`CreateNodesResultV2` → `CreateNodesResultArray`;
the unrelated `CreateNodesResult` is left alone).
- `@nx/angular/plugin` and `@nx/vitest` now also re-export
`createNodes`, completing the rename so the migration targets resolve.

All migrations are AST-based, modeled on devkit's `update-deep-imports`:
they handle `as` aliases, dedupe when both names are already imported,
preserve `type` modifiers and default imports, and leave
strings/comments, dynamic `import`/`require`, and unrelated specifiers
untouched. Each has unit + tree-runner specs and a `.md` doc, registered
at `23.0.0-beta.5`.

## Related Issue(s)

Follow-up to #35386. No issue to close.
2026-06-05 15:46:25 -04:00

2 lines
67 B
TypeScript

export { createNodes, createNodesV2 } from './src/plugins/plugin';