Skip to content

Commit 11f3675

Browse files
committed
feat(import-rewriter): add regex for rewriting tsdown/client references to vite-plus
1 parent f1c8046 commit 11f3675

1 file changed

Lines changed: 19 additions & 8 deletions

File tree

crates/vite_migration/src/import_rewriter.rs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,11 @@ static RE_REF_VITE_SUBPATH: LazyLock<Regex> = LazyLock::new(|| {
363363
Regex::new(r#"^(\s*///\s*<reference\s+types\s*=\s*["'])vite/(.+?)(["']\s*/>)"#).unwrap()
364364
});
365365

366+
/// `tsdown/client` → `vite-plus/pack/client`
367+
static RE_REF_TSDOWN_CLIENT: LazyLock<Regex> = LazyLock::new(|| {
368+
Regex::new(r#"^(\s*///\s*<reference\s+types\s*=\s*["'])tsdown/client(["']\s*/>)"#).unwrap()
369+
});
370+
366371
/// bare `tsdown` → `vite-plus/pack`
367372
static RE_REF_TSDOWN: LazyLock<Regex> = LazyLock::new(|| {
368373
Regex::new(r#"^(\s*///\s*<reference\s+types\s*=\s*["'])tsdown(["']\s*/>)"#).unwrap()
@@ -527,10 +532,14 @@ fn rewrite_reference_types(content: &mut String, skip_packages: &SkipPackages) -
527532
continue;
528533
}
529534
}
530-
if !skip_packages.skip_tsdown
531-
&& apply_regex_replace(line, &RE_REF_TSDOWN, "${1}vite-plus/pack${2}")
532-
{
533-
changed = true;
535+
if !skip_packages.skip_tsdown {
536+
if apply_regex_replace(line, &RE_REF_TSDOWN_CLIENT, "${1}vite-plus/pack/client${2}") {
537+
changed = true;
538+
continue;
539+
}
540+
if apply_regex_replace(line, &RE_REF_TSDOWN, "${1}vite-plus/pack${2}") {
541+
changed = true;
542+
}
534543
}
535544
}
536545

@@ -2553,12 +2562,14 @@ export default defineConfig({});"#
25532562
}
25542563

25552564
#[test]
2556-
fn test_rewrite_reference_types_tsdown_subpath_not_rewritten() {
2557-
// tsdown subpaths should NOT be rewritten because vite-plus only exports ./pack (no subpaths)
2565+
fn test_rewrite_reference_types_tsdown_client() {
25582566
let content = r#"/// <reference types="tsdown/client" />"#;
25592567
let result = rewrite_import_content(content, &SkipPackages::default()).unwrap();
2560-
assert!(!result.updated);
2561-
assert_eq!(result.content, content);
2568+
assert!(result.updated);
2569+
assert_eq!(
2570+
result.content,
2571+
r#"/// <reference types="vite-plus/pack/client" />"#
2572+
);
25622573
}
25632574

25642575
#[test]

0 commit comments

Comments
 (0)