We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
社区上用于管理 Node 版本的工具很多,较为流行的有:
非跨平台:nvm、n 跨平台:nvs、fnm
个人弃用 nvm 不是因为它不跨平台,而是启动 Shell 进程太耗时了... 加之它本身问题挺多的,详见:Important Notes。
对我最直接的影响是:此前那个 8G 运存的 MacBook Pro 打开 VS Code 的时候,总会因为 Shell 解析太久导致 VS Code 终止解析,最终造成了某些 Plugins(比如 Mercurial 相关插件)无法正常使用。此前吐槽过了,可移步文章:解决 Unable to resolve your shell environment in a reasonable time。
fnm(Fast Node Manager)基于 Rust 开发,是不是还没用就感觉到它的快了,哈哈~ 同时,它是跨平台的,支持 macOS、Linux、Windows。
🚀 Fast and simple Node.js version manager, built in Rust.
1. 安装 fnm(以 macOS 为例)
$ brew install fnm
2. 配置 fnm 所需的环境变量到 bash 或 zsh 配置文件中,以 zsh 为例:
$ fnm env --use-on-cd >> ~/.zshrc
亦可执行 fnm env --use-on-cd,将输出内容手动添加至 .bash_profile 或 .zshrc 里。
fnm env --use-on-cd
.bash_profile
.zshrc
3. 用 fnm 安装 Node
# 安装 LTS 版本 $ fnm install --lts # 安装指定大版本的最新版本 $ fnm install 18 # 安装指定版本 $ fnm install 18.21.1
相反地,可通过 fnm uninstall <version> 或 fnm uninstall <alias-name> 来删除指定版本,后者会同时移除别名。
fnm uninstall <version>
fnm uninstall <alias-name>
4. 通过 fnm 来指定 Node 版本
# 使用系统版本 $ fnm use system # 使用 fnm 所安装,且版本号为 18.21.1 的 Node 程序 $ fnm use 18.21.1 # 使用 fnm 所安装,且主版本号为 18 的最新版本的 Node 程序 $ fnm use 18
只要用 fnm use <version> 指定后,每次启动 Shell 将会默认使用对应的 Node 版本。
fnm use <version>
5. 设置别名
# 形式如:fnm alias <指定版本号> <别名> $ fnm alias 18.21.1 v18 # 设置别名后,可以简化指令为: $ fnm use v18
其实以上示例的别名意义不大,仅用于举例而已。原因是:在「不设置别名」的情况下,使用 fnm use 18,也能切换至 18.21.1。使用 fnm use <major> 会切换至对应主版本号对应的最新版本。
fnm use 18
18.21.1
fnm use <major>
假设我们安装了 18.20.0 和 18.21.1 两个主版本号相同的 Node 程序,使用 fnm use 18 只会切换至 18.21.1(即最新的版本),尽管通过 fnm alias 18.20.0 18 将 18.20.0 的别名设为 18,这样设置别名是无意义的。 此时可能需要用 fnm use 18.20 或 fnm use 18.20.0 来切换指定版本了,或者其他非纯数字的别名了。
18.20.0
fnm alias 18.20.0 18
18
fnm use 18.20
fnm use 18.20.0
较有意义的特殊别名 system 和 default:
system
default
.pkg
fnm
# 指定默认版本 $ fnm default 18.21.1 # 相当于 $ fnm alias 18.21.1 default
相反地,可通过 fnm unalias <alias-name> 来取消别名。
fnm unalias <alias-name>
6. 项目中指定特定版本
可以通过在项目根目录下添加 .node-version 或 .nvmrc 文件,并在其中指定版本。比如:
.node-version
.nvmrc
$ echo '18' > .node-version
前提是,配置 fnm 环境用的是 fnm env --use-on-cd 命令,而不是 fnm env。后者没有添加 Hook,因此不会是检查对应配置文件。有兴趣的可以对比两条命令的差别就明白了。
fnm env
由于团队成员所安装的 Node,其次版本或补丁版本号可能是不一样的,因此,多数情况下指定主版本号即可,无需指定到 18.21.1 等更具体的版本号(特殊场景除外)。
7. 卸载 fnm
若是通过 brew 安装的 fnm,则:
brew
$ brew uninstall fnm
接着,再移除 ~/.fnm 目录。
~/.fnm
$ rm -rf ~/.fnm
最后,移除 bash 或 zsh 的配置文件中与 fnm 相关的配置。比如:
bash
zsh
export PATH="/Users/frankie/Library/Caches/fnm_multishells/49559_1670052262156/bin":$PATH export FNM_VERSION_FILE_STRATEGY="local" export FNM_DIR="/Users/frankie/Library/Application Support/fnm" export FNM_NODE_DIST_MIRROR="https://nodejs.org/dist" export FNM_MULTISHELL_PATH="/Users/frankie/Library/Caches/fnm_multishells/49559_1670052262156" export FNM_ARCH="x64" export FNM_LOGLEVEL="info" autoload -U add-zsh-hook _fnm_autoload_hook() { if [[ -f .node-version || -f .nvmrc ]]; then fnm use --silent-if-unchanged fi } add-zsh-hook chpwd _fnm_autoload_hook && _fnm_autoload_hook rehash
在移除之前,通过以下方式查看使用 nvm 所安装的全局包,然后切换到 fnm 安装一下(有需要的话):
nvm
$ nvm use 16 Now using node v16.14.0 (npm v8.3.1) $ npm list -g /Users/frankie/.nvm/versions/node/v16.14.0/lib ├── [email protected] ├── [email protected] ├── [email protected] ├── simple-shell@ └── [email protected]
移除 nvm 的安装目录,通常是 ~/.nvm。执行以下命令即可:
~/.nvm
$ rm -rf "$NVM_DIR"
移除 bash 或 zsh 的配置文件中与 nvm 相关的配置。比如:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" --no-use # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
其他系统可看 Uninstalling / Removal。
相关内容文章:
The end.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
社区上用于管理 Node 版本的工具很多,较为流行的有:
个人弃用 nvm 不是因为它不跨平台,而是启动 Shell 进程太耗时了... 加之它本身问题挺多的,详见:Important Notes。
对我最直接的影响是:此前那个 8G 运存的 MacBook Pro 打开 VS Code 的时候,总会因为 Shell 解析太久导致 VS Code 终止解析,最终造成了某些 Plugins(比如 Mercurial 相关插件)无法正常使用。此前吐槽过了,可移步文章:解决 Unable to resolve your shell environment in a reasonable time。
fnm 安装与使用
fnm(Fast Node Manager)基于 Rust 开发,是不是还没用就感觉到它的快了,哈哈~
同时,它是跨平台的,支持 macOS、Linux、Windows。
1. 安装 fnm(以 macOS 为例)
2. 配置 fnm 所需的环境变量到 bash 或 zsh 配置文件中,以 zsh 为例:
亦可执行
fnm env --use-on-cd
,将输出内容手动添加至.bash_profile
或.zshrc
里。3. 用 fnm 安装 Node
相反地,可通过
fnm uninstall <version>
或fnm uninstall <alias-name>
来删除指定版本,后者会同时移除别名。4. 通过 fnm 来指定 Node 版本
只要用
fnm use <version>
指定后,每次启动 Shell 将会默认使用对应的 Node 版本。5. 设置别名
其实以上示例的别名意义不大,仅用于举例而已。原因是:在「不设置别名」的情况下,使用
fnm use 18
,也能切换至18.21.1
。使用fnm use <major>
会切换至对应主版本号对应的最新版本。较有意义的特殊别名
system
和default
:.pkg
等形式(比如官网下载的安装包)所安装的 Node 应用程序,称为系统版本。fnm
的一个默认版本,作为与18
是类似的,只是其语义表示默认罢了。相反地,可通过
fnm unalias <alias-name>
来取消别名。6. 项目中指定特定版本
可以通过在项目根目录下添加
.node-version
或.nvmrc
文件,并在其中指定版本。比如:前提是,配置 fnm 环境用的是
fnm env --use-on-cd
命令,而不是fnm env
。后者没有添加 Hook,因此不会是检查对应配置文件。有兴趣的可以对比两条命令的差别就明白了。由于团队成员所安装的 Node,其次版本或补丁版本号可能是不一样的,因此,多数情况下指定主版本号即可,无需指定到
18.21.1
等更具体的版本号(特殊场景除外)。7. 卸载 fnm
若是通过
brew
安装的fnm
,则:接着,再移除
~/.fnm
目录。$ rm -rf ~/.fnm
最后,移除
bash
或zsh
的配置文件中与fnm
相关的配置。比如:移除 nvm
在移除之前,通过以下方式查看使用
nvm
所安装的全局包,然后切换到fnm
安装一下(有需要的话):移除
nvm
的安装目录,通常是~/.nvm
。执行以下命令即可:$ rm -rf "$NVM_DIR"
移除
bash
或zsh
的配置文件中与nvm
相关的配置。比如:其他系统可看 Uninstalling / Removal。
其他
相关内容文章:
The end.
The text was updated successfully, but these errors were encountered: