Skip to content

Commit 7026d5a

Browse files
authored
Merge branch 'main' into feat/cli-completion
2 parents 9bbe101 + f467510 commit 7026d5a

File tree

22 files changed

+309
-74
lines changed

22 files changed

+309
-74
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
---
2+
name: bump-vite-task
3+
description: Bump vite-task git dependency to the latest main commit. Use when you need to update the vite-task crates (fspy, vite_glob, vite_path, vite_str, vite_task, vite_workspace) in vite-plus.
4+
allowed-tools: Read, Grep, Glob, Edit, Bash, Agent, WebFetch
5+
---
6+
7+
# Bump vite-task to Latest Main
8+
9+
Update the vite-task git dependency in `Cargo.toml` to the latest commit on the vite-task main branch, fix any breaking changes, and create a PR.
10+
11+
## Steps
12+
13+
### 1. Get current and target commits
14+
15+
- Read `Cargo.toml` and find the current `rev = "..."` for any vite-task git dependency (e.g., `vite_task`, `vite_path`, `fspy`, `vite_glob`, `vite_str`, `vite_workspace`). They all share the same revision.
16+
- Get the latest commit hash on vite-task's main branch:
17+
```bash
18+
git ls-remote https://github.com/voidzero-dev/vite-task.git refs/heads/main
19+
```
20+
21+
### 2. Update Cargo.toml
22+
23+
- Replace **all** occurrences of the old commit hash with the new one in `Cargo.toml`. There are 6 crate entries that reference the same vite-task revision: `fspy`, `vite_glob`, `vite_path`, `vite_str`, `vite_task`, `vite_workspace`.
24+
25+
### 3. Ensure upstream dependencies are cloned
26+
27+
- `cargo check` requires the `./rolldown` and `./vite` directories to exist (many workspace path dependencies point to `./rolldown/crates/...`).
28+
- Locally, clone them using the commit hashes from `packages/tools/.upstream-versions.json`.
29+
- CI handles this automatically via the `.github/actions/clone` action.
30+
31+
### 4. Verify compilation
32+
33+
- Run `cargo check` to ensure the new vite-task compiles without errors.
34+
- If there are compilation errors, these are **breaking changes** from vite-task. Fix them in the vite-plus codebase (the consuming side), not in vite-task.
35+
- Common breaking changes include: renamed functions/methods, changed function signatures, new required fields in structs, removed public APIs.
36+
37+
### 5. Run tests
38+
39+
- Run `cargo test -p vite_command -p vite_error -p vite_install -p vite_js_runtime -p vite_migration -p vite_shared -p vite_static_config -p vite-plus-cli -p vite_global_cli` to run the vite-plus crate tests.
40+
- Note: Some tests require network access (e.g., `vite_install::package_manager` tests, `vite_global_cli::commands::env` tests). These may fail in sandboxed environments. Verify they also fail on the main branch before dismissing them.
41+
- Note: `cargo test -p vite_task` will NOT work because vite_task is a git dependency, not a workspace member.
42+
43+
### 6. Update snap tests
44+
45+
vite-task changes often affect CLI output, which means snap tests need updating. Common output changes:
46+
47+
- **Status icons**: e.g., cache hit/miss indicators may change
48+
- **New CLI options**: e.g., new flags added to `vp run` that show up in help output
49+
- **Cache behavior messages**: e.g., new summary lines about cache status
50+
- **Task output formatting**: e.g., step numbering, separator lines
51+
52+
To update snap tests:
53+
54+
1. Push your changes and let CI run the snap tests.
55+
2. CI will show the diff in the E2E test logs if snap tests fail.
56+
3. Extract the diff from CI logs and apply it locally.
57+
4. Check all three platforms (Linux, Mac, Windows) since they may have slightly different snap test coverage.
58+
5. Watch for trailing newline issues - ensure snap files end consistently.
59+
60+
Snap test files are at `packages/cli/snap-tests/*/snap.txt` and `packages/cli/snap-tests-global/*/snap.txt`.
61+
62+
### 7. Create the PR
63+
64+
- Commit message: `chore: bump vite-task to <short-hash>`
65+
- PR title: `chore: bump vite-task to <short-hash>`
66+
- PR body: Link to vite-task CHANGELOG.md diff between old and new commits:
67+
```
68+
https://github.com/voidzero-dev/vite-task/compare/<old-hash>...<new-hash>#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
69+
```
70+
71+
### 8. Verify CI
72+
73+
Wait for CI and ensure the `done` check passes. Key checks to monitor:
74+
75+
- **Lint**: Clippy and format checks
76+
- **Test** (Linux, Mac, Windows): Rust unit tests
77+
- **CLI E2E test** (Linux, Mac, Windows): Snap tests - most likely to fail on a vite-task bump
78+
- **Run task**: Task runner integration tests
79+
- **Cargo Deny**: License/advisory checks (may have pre-existing failures unrelated to bump)
80+
81+
The only **required** status check for merging is `done`, which aggregates the other checks (excluding Cargo Deny).
82+
83+
## Notes
84+
85+
- Building the full CLI locally (`pnpm bootstrap-cli`) requires the rolldown Node.js package to be built first, which is complex. Prefer relying on CI for snap test generation.
86+
- `Cargo.lock` is automatically updated by cargo when you change the revision in `Cargo.toml`.

Cargo.lock

Lines changed: 18 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ dunce = "1.0.5"
8585
fast-glob = "1.0.0"
8686
flate2 = { version = "=1.1.9", features = ["zlib-rs"] }
8787
form_urlencoded = "1.2.1"
88-
fspy = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "398a147fd1ed42a88585d3a9481f200c3e56a2f4" }
88+
fspy = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "69cc6eba95a3b7f25f7d4d32c3f29b1386995907" }
8989
futures = "0.3.31"
9090
futures-util = "0.3.31"
9191
glob = "0.3.2"
@@ -184,15 +184,15 @@ vfs = "0.12.1"
184184
vite_command = { path = "crates/vite_command" }
185185
vite_error = { path = "crates/vite_error" }
186186
vite_js_runtime = { path = "crates/vite_js_runtime" }
187-
vite_glob = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "398a147fd1ed42a88585d3a9481f200c3e56a2f4" }
187+
vite_glob = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "69cc6eba95a3b7f25f7d4d32c3f29b1386995907" }
188188
vite_install = { path = "crates/vite_install" }
189189
vite_migration = { path = "crates/vite_migration" }
190190
vite_shared = { path = "crates/vite_shared" }
191191
vite_static_config = { path = "crates/vite_static_config" }
192-
vite_path = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "398a147fd1ed42a88585d3a9481f200c3e56a2f4" }
193-
vite_str = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "398a147fd1ed42a88585d3a9481f200c3e56a2f4" }
194-
vite_task = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "398a147fd1ed42a88585d3a9481f200c3e56a2f4" }
195-
vite_workspace = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "398a147fd1ed42a88585d3a9481f200c3e56a2f4" }
192+
vite_path = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "69cc6eba95a3b7f25f7d4d32c3f29b1386995907" }
193+
vite_str = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "69cc6eba95a3b7f25f7d4d32c3f29b1386995907" }
194+
vite_task = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "69cc6eba95a3b7f25f7d4d32c3f29b1386995907" }
195+
vite_workspace = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "69cc6eba95a3b7f25f7d4d32c3f29b1386995907" }
196196
walkdir = "2.5.0"
197197
wax = "0.6.0"
198198
which = "8.0.0"

crates/vite_global_cli/src/commands/env/default.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ async fn set_default(version: &str) -> Result<ExitStatus, Error> {
8787
config.default_node_version = Some(store_version);
8888
save_config(&config).await?;
8989

90+
// Invalidate resolve cache so the new default takes effect immediately
91+
crate::shim::invalidate_cache();
92+
9093
println!("\u{2713} Default Node.js version set to {display_version}");
9194

9295
Ok(ExitStatus::default())

0 commit comments

Comments
 (0)