You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Operating system and version: Linux with bash and perl interpreter
The bash snippet suggested at https://github.com/nvm-sh/nvm?tab=readme-ov-file#bash is tremendously slow - on every single 'cd' the user types, there is a delay before reaching the target dir, regardless of whether the same or a different version of node needs to be used, and this can be counter-productive and annoying.
This is why I wrote the following .bashrc snippet, which can replace the aforementioned. Nevertheless, it uses Perl (even though it's a .bashrc snippet). However, if you do have Perl installed, it is incredibly faster than the (currently) official one.
cdnvm() {
commandcd"$@"||return$?eval$(perl <<'END' use File::Basename; use Cwd; use feature 'say'; my $dir = getcwd; while (1) { if (-f "$dir/.nvmrc") { my $current_v = `node -v` =~ s/^v|\s+\z//gr; open my $fh, '<', "$dir/.nvmrc" or die "Couldn't read $dir/.nvmrc: $!"; my $this_v = <$fh> =~ s/^v|\s+\z//gr; if ($this_v ne $current_v) { say 'nvm use'; } last; } last if $dir eq '/'; $dir = dirname $dir; }END)
}
alias cd='cdnvm'
cdnvm "$PWD"||exit
The text was updated successfully, but these errors were encountered:
Here's a .bashrc snippet without perl that achieves the same thing (It's AI-generated, since my bash skills aren't good enough):
cdnvm() {
commandcd"$@"||return$?eval$(bash <<'END' dir=$(pwd) while true; do if [ -f "$dir/.nvmrc" ]; then current_v=$(node -v | sed 's/^v//; s/[[:space:]]*$//') this_v=$(cat "$dir/.nvmrc" | sed 's/^v//; s/[[:space:]]*$//') if [ "$this_v" != "$current_v" ]; then echo "nvm use" fi break fi if [ "$dir" = "/" ]; then break fi dir=$(dirname "$dir") doneEND)
}
alias cd='cdnvm'
cdnvm "$PWD"||exit
Operating system and version: Linux with bash and perl interpreter
The bash snippet suggested at https://github.com/nvm-sh/nvm?tab=readme-ov-file#bash is tremendously slow - on every single 'cd' the user types, there is a delay before reaching the target dir, regardless of whether the same or a different version of node needs to be used, and this can be counter-productive and annoying.
This is why I wrote the following .bashrc snippet, which can replace the aforementioned. Nevertheless, it uses Perl (even though it's a .bashrc snippet). However, if you do have Perl installed, it is incredibly faster than the (currently) official one.
The text was updated successfully, but these errors were encountered: