删除未生效的活动版本分支,回退链只认默认别名

- 删除 active_managed_prefix(FNM_MULTISHELL_PATH / NVM_BIN):激活时活动版本已在 PATH 里,而该分支拿到的 multishell 前缀与枚举出的安装前缀不相等,永远不命中
- resolve_managed_fallback_runtime 回退顺序收敛为 engines 最高匹配 > 默认别名 > 已安装最高版本
- 同步 decision-log、里程碑与两处技术方案的版本选择口径
This commit is contained in:
2026-10-07 11:59:42 +08:00
parent 6f4667d96f
commit deecebf0bb
5 changed files with 4 additions and 25 deletions
@@ -657,22 +657,6 @@ fn read_project_engines_range(root: &Path) -> Option<String> {
}
}
fn active_managed_prefix() -> Option<PathBuf> {
if let Some(path) = std::env::var_os("FNM_MULTISHELL_PATH") {
if let Ok(prefix) = validate_node_installation_prefix(Path::new(&path)) {
return Some(prefix);
}
}
if let Some(bin) = std::env::var_os("NVM_BIN") {
if let Some(parent) = Path::new(&bin).parent() {
if let Ok(prefix) = validate_node_installation_prefix(parent) {
return Some(prefix);
}
}
}
None
}
fn default_managed_installation<'a>(
installed: &'a [InstalledNodeVersion],
fnm_roots: &[PathBuf],
@@ -735,11 +719,6 @@ fn resolve_managed_fallback_runtime(
return Ok(Some(runtime_from_installed(node, root, path)?));
}
}
if let Some(prefix) = active_managed_prefix() {
if let Some(node) = installed.iter().find(|node| node.prefix == prefix) {
return Ok(Some(runtime_from_installed(node, root, path)?));
}
}
if let Some(node) = default_managed_installation(&installed, fnm_roots, nvm_roots) {
return Ok(Some(runtime_from_installed(node, root, path)?));
}