Skip to content

Commit e73cd95

Browse files
committed
fix(env): unset session override when vp env use called without arguments
Fixes #951 When `vp env use` is called without a version argument, it should revert to file-based Node.js version resolution instead of keeping the session override from `VITE_PLUS_NODE_VERSION` env var or session file. Changes: - Add `resolve_version_from_files()` to resolve version skipping session overrides - Update `vp env use` to unset session override before resolving when no arg provided - This allows users to temporarily override with `vp env use 22` and revert with `vp env use`
1 parent 8c6c1b2 commit e73cd95

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,13 @@ pub async fn resolve_version(cwd: &AbsolutePath) -> Result<VersionResolution, Er
230230
});
231231
}
232232

233+
resolve_version_from_files(cwd).await
234+
}
235+
236+
/// Resolve Node.js version from project files only (skipping session overrides).
237+
///
238+
/// This is used by `vp env use` without arguments to revert to file-based resolution.
239+
pub async fn resolve_version_from_files(cwd: &AbsolutePath) -> Result<VersionResolution, Error> {
233240
let provider = NodeProvider::new();
234241

235242
// Use shared version resolution with directory walking

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,19 @@ pub async fn execute(
9494
let provider = vite_js_runtime::NodeProvider::new();
9595

9696
// Resolve version: explicit argument or from project files
97+
// When no argument provided, unset session override and resolve from project files
9798
let (resolved_version, source_desc) = if let Some(ref ver) = version {
9899
let resolved = config::resolve_version_alias(ver, &provider).await?;
99100
(resolved, format!("{ver}"))
100101
} else {
101-
let resolution = config::resolve_version(&cwd).await?;
102+
// No version argument - unset session override first
103+
if has_eval_wrapper() {
104+
println!("{}", format_unset(&shell));
105+
} else {
106+
config::delete_session_version().await?;
107+
}
108+
// Now resolve from project files (not from session override)
109+
let resolution = config::resolve_version_from_files(&cwd).await?;
102110
let source = resolution.source.clone();
103111
(resolution.version, source)
104112
};

0 commit comments

Comments
 (0)