|
| 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`. |
0 commit comments