大家好,我是刘布斯。
在前端项目开发中,Node 版本管理工具是必备工具,大部分人应该都在使用 nvm ,但如果需要维护的项目比较多,而且不同项目要求的 Node 版本不同,版本管理会特别麻烦。
今天分享的 Volta,它不仅带来了极速的版本切换体验,还能自动管理项目的 Node 版本依赖,降低使用的心智成本,号称是Node.js 版本管理的最终答案。
本文由同事提供,感谢 @兰之 的授权。
面临不同项目对 Nodejs 版本不同的依赖,我们通常会在项目 package.json
的 engines
字段中声明项目所需的版本,同时采用 nvm
管理不同版本的 Nodejs
实例,只需要在进入项目后查看一眼 engines
字段,手动切换至对应的版本即可。
项目数量较少时,这确实是一种可选的方案。但随着团队规模扩大,同时面临数十个待维护的存量项目时,手动的翻找、切换、安装无疑会是一场灾难
Volta 就是为了解决这一问题而生的!
以下特点摘自 Volta 官方文档:https://docs.volta.sh/guide/
Volta 采用 Rust 编写,原生语言的加持让它的性能十分强悍。使用 Volta,你可以在手动给项目选择一个 Node 版本,然后再也不必关心它,甚至可以在不同项目目录之间任意切换,也不再需要手动在不同 Node 版本之间切换。
Volta 是跨平台的,不同操作系统的同学可以选择不同的方式。
curl https://get.volta.sh | bash
以下两种方式任选其一即可
winget
winget install Volta.Volta
进入项目根目录,执行volta pin node@version
,就会看到 Volta
在 package.json
中新增了一些配置,例如:
将变更提交至 Git 仓库,就可以让其他协作的小伙伴自动使用你指定的 Node 版本了
pnpm Support | Volta
目前 Volta 对 pnpm 的支持是实验性的,但实测常用的功能都能支持,因此是可以正常使用的:
export VOLTA_FEATURE_PNPM=1
VOLTA_FEATURE_PNPM
变量,值为 1随后就可以像 pin Node
版本一样,在不同项目中固定不同的 pnpm 版本了
以 Mac 及 ZSH 为例:
code ~/.zshrc
# 新增代码:
# 手动开启volta的PNPM支持
export VOLTA_FEATURE_PNPM=1
卸载 pnpm | pnpm
rm -rf $PNPM_HOME
npm rm -g pnpm
如果类似 Whistle
等的全局工具是使用自行安装的 pnpm 管理的,则应在卸载 pnpm 后自行重新使用 npm 来安装
pnpm list --global
列出当前安装的全局包npm add --global <packageName>
逐个安装即可若之前有安装 NVM 等其他的版本管理工具,则需手动移除,否则可能与Volta
产生冲突,以卸载 NVM 为例:
nvm_dir="${NVM_DIR:-~/.nvm}"
nvm unload
rm -rf "$nvm_dir"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion
Q:上述步骤好简单,没有别的操作了?是的!使用 Volta 就是这么省心!
当然,本文只介绍了管理 Node 版本这一功能,Volta 还有一些其他针对工具链的增强,感兴趣可以自行阅读文档
Q:不同的目录,不同的终端都能自动切换吗?
是的!Volta 会在进入项目目录后自动读取项目中声明的版本并主动切换,如果没有声明则会退回全局的版本
如果没有设置过全局版本,则可以使用volta install node@version
命令主动设置一个版本到全局环境,相当于 nvm 的 use 命令
Q:项目维护者没有安装 Volta 怎么办?
回退到之前的方案,自己查看项目的 engines 字段,自己手动切换版本
Q:项目中声明了本地未下载的 Node 版本会怎样?
Volta 会在你执行 node 相关命令时自动下载声明的版本,你无需关心这一过程
Q:全局移除了其他来源的 Node,遇到没有 Volta 声明的文件夹怎么办?
使用 install 子命令安装一个全局版本,例如
volta install node@20
node -v # v20.18.0
其实,install 也可以简单等价为 use,执行时会下载并设置为全局版本
如果你和我一样,是个懒人,觉得 volta
命令太长了懒得拼!!!可以配合 alias
的别名功能,整个短的,例如在 ~/.zshrc
中配置别名为vt
code ~/.zshrc # 或者使用其他编辑器
# 随后在文件中新增一行
alias vt="volta"
还没有使用过我们刷题网站(https://fe.ecool.fun/)或者刷题小程序的同学,如果近期准备或者正在找工作,千万不要错过,题库主打题全和更新快哦~。
有会员购买、辅导咨询的小伙伴,可以通过下面的二维码,联系我们的小助手。