Skip to content

feat(migration): add tsdown to vite lib migration support#362

Merged
fengmk2 merged 2 commits intomainfrom
rewrite-tsdown-to-vite-lib
Dec 24, 2025
Merged

feat(migration): add tsdown to vite lib migration support#362
fengmk2 merged 2 commits intomainfrom
rewrite-tsdown-to-vite-lib

Conversation

@fengmk2
Copy link
Copy Markdown
Member

@fengmk2 fengmk2 commented Dec 23, 2025

  • Add import rewriting: import { defineConfig } from 'tsdown'import { defineConfig } from '@voidzero-dev/vite-plus/lib'
  • Add declare module rewriting for tsdown
  • Add script rewriting: tsdownvite lib
  • Add unit tests for tsdown import and declare module rewriting
  • Add snap test fixture for migration-from-tsdown

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com


Note

Introduces automated migration from tsdown to Vite+.

  • Adds import/declare rewrite rules mapping tsdown to @voidzero-dev/vite-plus/lib with unit tests
  • New merge_tsdown_config (Rust core, NAPI binding, and JS export) imports tsdown.config.* into vite.config.* and injects lib: tsdownConfig (idempotent)
  • Migrator detects tsdown.config.*; merges JSON config content into lib and deletes the file, or adds an import for TS/JS; removes tsdown and replaces scripts via rules (tsdownvite lib)
  • Updates CLI rules (vite-tools.yml) and adds snap tests for migration-from-tsdown*; minor scripts: adds test:unit

Written by Cursor Bugbot for commit f0e76cc. This will update automatically on new commits. Configure here.

@fengmk2 fengmk2 force-pushed the rewrite-declare-module-namespace branch from cc93454 to 4da046c Compare December 23, 2025 08:24
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch 2 times, most recently from 0beb490 to 30704fc Compare December 23, 2025 08:31
@fengmk2 fengmk2 self-assigned this Dec 23, 2025
@fengmk2 fengmk2 force-pushed the rewrite-declare-module-namespace branch from 25bac5c to f96eab7 Compare December 23, 2025 08:55
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch from 30704fc to 7927e5e Compare December 23, 2025 08:55
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Dec 23, 2025

Deploying vite-plus with  Cloudflare Pages  Cloudflare Pages

Latest commit: c2da86a
Status:⚡️  Build in progress...

View logs

@fengmk2 fengmk2 force-pushed the rewrite-declare-module-namespace branch from f96eab7 to f02d318 Compare December 23, 2025 11:53
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch 3 times, most recently from e2e5399 to 5d538f9 Compare December 24, 2025 03:30
@fengmk2 fengmk2 force-pushed the rewrite-declare-module-namespace branch 2 times, most recently from c2be0e2 to 9d34b0d Compare December 24, 2025 04:38
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch from 5d538f9 to ac6a9e0 Compare December 24, 2025 04:38
@fengmk2 fengmk2 requested a review from Brooooooklyn December 24, 2025 04:39
@fengmk2 fengmk2 marked this pull request as ready for review December 24, 2025 04:39
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch 2 times, most recently from 11fdb5c to 15d194b Compare December 24, 2025 05:25
@fengmk2 fengmk2 force-pushed the rewrite-declare-module-namespace branch from 9d34b0d to ea8c676 Compare December 24, 2025 05:25
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch from 15d194b to b01886a Compare December 24, 2025 05:35
@fengmk2 fengmk2 force-pushed the rewrite-declare-module-namespace branch from ea8c676 to a4b708d Compare December 24, 2025 05:42
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch 2 times, most recently from 43287ba to 73b0808 Compare December 24, 2025 06:10
@fengmk2 fengmk2 force-pushed the rewrite-declare-module-namespace branch 2 times, most recently from aac6031 to e3a2603 Compare December 24, 2025 07:02
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch from 73b0808 to f0e76cc Compare December 24, 2025 07:02
@Brooooooklyn
Copy link
Copy Markdown
Member

cursor review

@graphite-app graphite-app Bot changed the base branch from rewrite-declare-module-namespace to graphite-base/362 December 24, 2025 07:23
Comment thread crates/vite_migration/src/vite_config.rs
- Add import rewriting: `import { defineConfig } from 'tsdown'` → `import { defineConfig } from '@voidzero-dev/vite-plus/lib'`
- Add declare module rewriting for tsdown
- Add script rewriting: `tsdown` → `vite lib`
- Add unit tests for tsdown import and declare module rewriting
- Add snap test fixture for migration-from-tsdown

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch from f0e76cc to 97f9757 Compare December 24, 2025 07:42
@graphite-app graphite-app Bot changed the base branch from graphite-base/362 to main December 24, 2025 07:42
@graphite-app
Copy link
Copy Markdown

graphite-app Bot commented Dec 24, 2025

Merge activity

  • Dec 24, 7:42 AM UTC: Graphite rebased this pull request, because this pull request is set to merge when ready.
  • Dec 24, 8:08 AM UTC: @fengmk2 merged this pull request with Graphite.

Add functionality to automatically import tsdown.config.ts and add
`lib: libConfig` to the vite defineConfig when migrating.

- Add merge_tsdown_config function in Rust
- Reuse generate_merge_rule for adding lib config (consistent with lint/fmt)
- Add NAPI binding for mergeTsdownConfig
- Update migrator to call mergeTsdownConfigFile instead of notifyTsdownConfig
- Create vite.config.ts if it doesn't exist before merging tsdown config
- Support vite.config.ts files without any import statements
- Use ast-grep for consistent import addition (add_lib_config_import)
- Always show documentation link for manual tsdown config merging
- Add idempotency checks to prevent duplicates when running migration multiple times
- Add unit tests with complete content comparison for tsdown config merging

Note: ast-grep patterns match the call expression without the trailing
semicolon. A code formatter (e.g., `vite fmt`) can add semicolons back.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings December 24, 2025 07:56
@fengmk2 fengmk2 force-pushed the rewrite-tsdown-to-vite-lib branch from 97f9757 to c2da86a Compare December 24, 2025 07:56
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds automated migration support from tsdown (a TypeScript library bundler) to Vite+. The migration handles import rewriting, config file merging, package dependency updates, and CLI script replacements.

  • Import and declare module statements are rewritten from tsdown@voidzero-dev/vite-plus/lib
  • Config files are merged into vite.config.ts: JSON configs are merged inline; TS/JS configs are imported
  • Package scripts are updated: tsdownvite lib

Reviewed changes

Copilot reviewed 22 out of 23 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/global/src/migration/migrator.ts Adds mergeTsdownConfigFile function to orchestrate tsdown config migration, called from all migration entry points
packages/global/src/migration/detector.ts Enables detection of tsdown.config.* files across all supported extensions
packages/global/src/migration/__tests__/__snapshots__/migrator.spec.ts.snap Updates snapshots to reflect removal of tsdown package from dependencies
packages/global/snap-tests/migration-from-tsdown/* Adds snap test fixture for TS/JS config migration (imports config file)
packages/global/snap-tests/migration-from-tsdown-json-config/* Adds snap test fixture for JSON config migration (merges inline and deletes file)
packages/global/rules/vite-tools.yml Adds bash command rewriting rule: tsdownvite lib
crates/vite_migration/src/vite_config.rs Implements merge_tsdown_config function with extension mapping (.ts→.js, etc.) and comprehensive unit tests
crates/vite_migration/src/import_rewriter.rs Adds import and declare module rewriting rules for tsdown package with unit tests
crates/vite_migration/src/lib.rs Exports merge_tsdown_config function
packages/global/binding/src/migration.rs Creates NAPI binding for merge_tsdown_config Rust function
packages/global/binding/src/lib.rs Exports merge_tsdown_config binding
packages/global/binding/index.js Exports mergeTsdownConfig JavaScript function
packages/global/binding/index.d.ts Adds TypeScript type definitions for mergeTsdownConfig
package.json Adds test:unit npm script

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/global/src/migration/migrator.ts
Comment thread packages/global/src/migration/migrator.ts
@fengmk2 fengmk2 merged commit 78dbe56 into main Dec 24, 2025
18 of 19 checks passed
@fengmk2 fengmk2 deleted the rewrite-tsdown-to-vite-lib branch December 24, 2025 08:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants