Skip to content

Commit 20aab57

Browse files
committed
fix(installer): match install.ps1 Node.js manager default for interactive mode
When system node is present: - Interactive mode: default to enabled (matching install.ps1's Y/n prompt where Enter = yes). User can disable via customize menu. - Silent mode (-y): default to disabled (don't silently take over). This matches install.ps1 behavior where most interactive users who press Enter get node management enabled by default.
1 parent 899e98f commit 20aab57

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

crates/vite_installer/src/main.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ async fn run(mut opts: cli::Options) -> i32 {
6767
// Pre-compute Node.js manager default before showing the menu,
6868
// so the user sees the resolved value and can override it.
6969
if !opts.no_node_manager {
70-
opts.no_node_manager = !auto_detect_node_manager(&install_dir);
70+
opts.no_node_manager = !auto_detect_node_manager(&install_dir, !opts.yes);
7171
}
7272

7373
if !opts.yes {
@@ -232,8 +232,10 @@ async fn do_install(
232232
/// 2. Already managing Node (bin/node.exe exists) → enable (refresh)
233233
/// 3. CI / Codespaces / DevContainer / DevPod → enable
234234
/// 4. No system `node` found → enable
235-
/// 5. System node present → disable (user can enable via customize menu)
236-
fn auto_detect_node_manager(install_dir: &vite_path::AbsolutePath) -> bool {
235+
/// 5. System node present, interactive → enable (matching install.ps1's default-Y prompt;
236+
/// user can disable via customize menu before proceeding)
237+
/// 6. System node present, silent → disable (don't silently take over)
238+
fn auto_detect_node_manager(install_dir: &vite_path::AbsolutePath, interactive: bool) -> bool {
237239
// VP_NODE_MANAGER env var: "yes" or "no"
238240
if let Ok(val) = std::env::var("VP_NODE_MANAGER") {
239241
return val.eq_ignore_ascii_case("yes");
@@ -254,9 +256,15 @@ fn auto_detect_node_manager(install_dir: &vite_path::AbsolutePath) -> bool {
254256
return true;
255257
}
256258

257-
// Auto-enable if no system node available; otherwise default to disabled
258-
// (the interactive menu lets users enable it before proceeding)
259-
which::which("node").is_err()
259+
// Auto-enable if no system node available
260+
if which::which("node").is_err() {
261+
return true;
262+
}
263+
264+
// System node exists: in interactive mode, default to enabled (matching
265+
// install.ps1's Y/n prompt where Enter = yes). The user can disable it
266+
// in the customize menu. In silent mode, don't take over.
267+
interactive
260268
}
261269

262270
/// Windows locks running `.exe` files — rename the old one out of the way before copying.

0 commit comments

Comments
 (0)