From 4f9017645be9cb6102895c3007f7217ed942adae Mon Sep 17 00:00:00 2001 From: Vladimir Ivakin Date: Thu, 11 Dec 2025 18:29:47 +0100 Subject: [PATCH] fix(fnm): simplify config and respect package.json --- modules/fnm/fnm.nu | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/modules/fnm/fnm.nu b/modules/fnm/fnm.nu index fe92a7874..1e03afc17 100644 --- a/modules/fnm/fnm.nu +++ b/modules/fnm/fnm.nu @@ -1,25 +1,8 @@ export-env { - def fnm-env [] { - mut env_vars = {} - let pwsh_vars = ( - ^fnm env --shell power-shell | lines | parse "$env:{key} = \"{value}\"" - ) - - # fnm-prefixed vars - for v in ($pwsh_vars | slice 1..) { - $env_vars = ($env_vars | insert $v.key $v.value) - } - - # path - let env_used_path = ($env | columns | where { str downcase | $in == "path" } | get 0) - let path_value = ($pwsh_vars | get 0.value | split row (char esep)) - $env_vars = ($env_vars | insert $env_used_path $path_value) - - return $env_vars - } - if not (which fnm | is-empty) { - fnm-env | load-env + ^fnm env --json | from json | load-env + + $env.PATH = $env.PATH | prepend ($env.FNM_MULTISHELL_PATH | path join (if $nu.os-info.name == 'windows' {''} else {'bin'})) $env.config = ( $env.config? @@ -32,11 +15,13 @@ export-env { $env.config.hooks.env_change.PWD | any { try { get __fnm_hook } catch { false } } ) if not $__fnm_hooked { + let version_files = [.nvmrc .node-version package.json] + $env.config.hooks.env_change.PWD = ( $env.config.hooks.env_change.PWD | append { __fnm_hook: true code: {|before, after| - if ('FNM_DIR' in $env) and ([.nvmrc .node-version] | path exists | any {|it| $it }) { + if ('FNM_DIR' in $env) and ($version_files | path exists | any {|it| $it }) { ^fnm use } }