From 4c24e5185ea22d74411de096e249c85d7670da90 Mon Sep 17 00:00:00 2001 From: "voidzero-bot[bot]" <348775505+voidzero-bot[bot]@users.noreply.github.com> Date: Thu, 29 Oct 2026 21:22:29 +0000 Subject: [PATCH] fix(cli): rewrite vite imports when vp create adds a package to a monorepo --- .../src/migration/__tests__/migrator.spec.ts | 26 +++++++++++++++++++ .../src/migration/migrator/orchestrators.ts | 10 +++++++ 2 files changed, 36 insertions(+) diff --git a/packages/cli/src/migration/__tests__/migrator.spec.ts b/packages/cli/src/migration/__tests__/migrator.spec.ts index c1bcb66131..99207069dd 100644 --- a/packages/cli/src/migration/__tests__/migrator.spec.ts +++ b/packages/cli/src/migration/__tests__/migrator.spec.ts @@ -8487,6 +8487,32 @@ export default defineConfig({ expect(report.wrappedPluginConfigCount).toBe(1); }); + it('rewrites vite imports before wrapping plugins in direct monorepo project rewrites', () => { + fs.writeFileSync( + path.join(tmpDir, 'package.json'), + JSON.stringify({ name: 'web', devDependencies: { vite: '^7.0.0' } }), + ); + fs.writeFileSync( + path.join(tmpDir, 'vite.config.ts'), + `import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [react()], +}); +`, + ); + const report = createMigrationReport(); + + rewriteMonorepoProject(tmpDir, PackageManager.pnpm, true, true, report); + + const viteConfig = fs.readFileSync(path.join(tmpDir, 'vite.config.ts'), 'utf8'); + expect(viteConfig).toContain("import { defineConfig, lazyPlugins } from 'vite-plus'"); + expect(viteConfig).not.toContain("from 'vite'"); + expect(viteConfig).toContain('plugins: lazyPlugins(() => [react()])'); + expect(report.wrappedPluginConfigCount).toBe(1); + expect(report.rewrittenImportFileCount).toBe(1); + }); + it('wraps package-level inline plugin arrays in monorepos', () => { const appDir = path.join(tmpDir, 'apps', 'web'); fs.mkdirSync(appDir, { recursive: true }); diff --git a/packages/cli/src/migration/migrator/orchestrators.ts b/packages/cli/src/migration/migrator/orchestrators.ts index dc4a2c5550..a9041b3f51 100644 --- a/packages/cli/src/migration/migrator/orchestrators.ts +++ b/packages/cli/src/migration/migrator/orchestrators.ts @@ -575,6 +575,14 @@ export function rewriteMonorepoProject( ? findYarnWorkspaceHoisting(workspaceContext?.rootDir ?? projectPath) : undefined; + // Capture Oxlint plugin owner directories before `rewritePackageJson` strips + // `oxlint` from the package manifest. The import rewriter needs these signals + // to preserve legitimate plugin imports. + const oxlintOwnerDirs = collectOxlintOwnerDirs( + workspaceContext?.rootDir ?? projectPath, + workspaceContext?.packages, + ); + let extractedStagedConfig: Record | null = null; editJsonFile<{ devDependencies?: Record; @@ -639,6 +647,8 @@ export function rewriteMonorepoProject( } if (!deferLazyPluginWrapping) { + // rewrite imports in all TypeScript/JavaScript files before lazy plugin import merging + rewriteAllImports(projectPath, silent, report, true, oxlintOwnerDirs); wrapLazyPluginsInViteConfig(projectPath, silent, report); migrateTaskCacheConfigInViteConfig(projectPath, silent, report); }