Skip to content

Commit e999934

Browse files
authored
fix(migrate): vite --version should migrate to vp --version, not vp dev --version (#657)
Add a `replace-vite-version` ast-grep rule before `replace-vite` to intercept version flags (`--version`, `-v`) so they map to `vp` instead of `vp dev`. closes VP-205
1 parent f3dcfe6 commit e999934

7 files changed

Lines changed: 81 additions & 0 deletions

File tree

crates/vite_migration/src/package.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,18 @@ mod tests {
7878
use super::*;
7979

8080
const RULES_YAML: &str = r#"
81+
# vite --version / vite -v => vp --version / vp -v (global flags, not dev-specific)
82+
---
83+
id: replace-vite-version
84+
language: bash
85+
rule:
86+
kind: command_name
87+
regex: '^vite$'
88+
inside:
89+
kind: command
90+
regex: 'vite\s+(-v|--version)'
91+
fix: vp
92+
8193
# vite => vp dev (handles all cases: with/without env var prefix and flag args)
8294
# Match command_name to preserve env var prefix and arguments
8395
# Excludes subcommands like "vite build", "vite test", etc.
@@ -156,6 +168,9 @@ fix: vp pack
156168
assert_eq!(rewrite_script("vp fmt", &rules), "vp fmt");
157169
assert_eq!(rewrite_script("vp pack", &rules), "vp pack");
158170
assert_eq!(rewrite_script("vp dev --port 3000", &rules), "vp dev --port 3000");
171+
// vite version flags (global, not dev-specific)
172+
assert_eq!(rewrite_script("vite --version", &rules), "vp --version");
173+
assert_eq!(rewrite_script("vite -v", &rules), "vp -v");
159174
// vite commands
160175
assert_eq!(rewrite_script("vite", &rules), "vp dev");
161176
assert_eq!(rewrite_script("vite dev", &rules), "vp dev");

packages/cli/rules/vite-tools.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
# vite --version / vite -v => vp --version / vp -v (global flags, not dev-specific)
2+
---
3+
id: replace-vite-version
4+
language: bash
5+
rule:
6+
kind: command_name
7+
regex: '^vite$'
8+
inside:
9+
kind: command
10+
regex: 'vite\s+(-v|--version)'
11+
fix: vp
12+
13+
114
# vite => vp dev (handles all cases: with/without env var prefix and flag args)
215
# Match command_name to preserve env var prefix and arguments
316
# Excludes subcommands like "vite build", "vite test", etc.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"name": "migration-vite-version",
3+
"scripts": {
4+
"version": "vite --version",
5+
"version:short": "vite -v"
6+
},
7+
"devDependencies": {
8+
"vite": "^7.0.0"
9+
}
10+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
> vp migrate --no-interactive # migration should rewrite vite --version to vp --version
2+
┌ VITE+ - The Unified Toolchain for the Web
3+
4+
● Using default package manager: pnpm
5+
6+
● pnpm@latest installing...
7+
8+
● pnpm@<semver> installed
9+
10+
◆ Wrote agent instructions to AGENTS.md
11+
12+
└ ✔ Migration completed!
13+
14+
15+
> cat package.json # check package.json
16+
{
17+
"name": "migration-vite-version",
18+
"scripts": {
19+
"version": "vp --version",
20+
"version:short": "vp -v"
21+
},
22+
"devDependencies": {
23+
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
24+
"vite-plus": "latest"
25+
},
26+
"pnpm": {
27+
"overrides": {
28+
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
29+
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
30+
}
31+
},
32+
"packageManager": "pnpm@<semver>"
33+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"commands": [
3+
"vp migrate --no-interactive # migration should rewrite vite --version to vp --version",
4+
"cat package.json # check package.json"
5+
]
6+
}

packages/cli/src/migration/__tests__/__snapshots__/migrator.spec.ts.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ exports[`rewritePackageJson > should rewrite package.json scripts 1`] = `
8282
"ready_new": "vp install && vp fmt && vp lint --type-aware && vp test -r && vp build -r",
8383
"test": "vp test",
8484
"test_run": "vp test run && vp test --ui",
85+
"version": "vp --version",
86+
"version_short": "vp -v",
8587
},
8688
}
8789
`;

packages/cli/src/migration/__tests__/migrator.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ describe('rewritePackageJson', () => {
3131
dev: 'vite',
3232
dev_cjs: 'VITE_CJS_IGNORE_WARNING=true vite',
3333
dev_cjs_cross_env: 'cross-env VITE_CJS_IGNORE_WARNING=true vite',
34+
version: 'vite --version',
35+
version_short: 'vite -v',
3436
dev_help: 'vite --help && vite -h',
3537
dev_port: 'vite --port 3000',
3638
dev_host: 'vite --host 0.0.0.0',

0 commit comments

Comments
 (0)