Node.js 版本管理的最终答案 Volta
文章目录
- 特点
- 安装
- Unix系统安装
- Windows系统安装
- 常用命令
- volta fetch
- volta install
- volta uninstall
- volta pin
- volta list
- volta completions
- volta which
- volta setup
- volta run
- volta help
- 建议
目前对于前端项目的node 版本,我们一般会在项目 package.json
的 engines
字段中声明项目所需的版本,同时采用 nvm
管理不同版本的 Nodejs 实例,但是如果要并行的项目很多,这就是一个痛点。
Volta就是为了解决这个问题而出现的,Node.js 版本管理的最终答案。
特点
Volta 采用 Rust 编写,性能非常棒。使用 Volta,你可以在手动给项目选择一个 Node 版本,然后再也不必关心它,甚至可以在不同项目目录之间任意切换,也不再需要手动在不同 Node 版本之间切换。
- ⚡ 速度快 ⚡
- 无缝的按项目版本切换
- 跨平台支持,包括 Windows 和所有 Unix shell
- 支持多个软件包管理器
- 稳定的工具安装 — 无需在每次 Node 升级时重新安装!
- 可扩展性钩子,用于特定站点的定制化
安装
Unix系统安装
在包括 macOS 在内的大多数 Unix 系统上,可以使用单个命令安装 Volta:
curl https://get.volta.sh | bash
Windows系统安装
对于 Windows,推荐的安装 Volta 的方法是使用
winget
:
winget install Volta.Volta
更多内容可以去看Volta文档,目前生态肯定没那么完善,在windows系统上肯定处处碰壁,我的建议是先了解了解,之后确实有需要再去使用,当然铁头娃的话,也可以去用。
常用命令
volta 命令行二进制文件的命令参考,其语法如下:
volta fetch
volta fetch 这个命令用于将一个工具下载到本地机器上。它通常用于获取 Node.js 或 npm 的特定版本。
volta install
volta install 这个命令用于在您的工具链中安装一个工具。例如,您可以安装特定的 Node.js 或 npm 版本。
volta uninstall
volta uninstall 这个命令用于从您的工具链中卸载一个工具。如果您不再需要某个版本的 Node.js 或 npm,可以使用这个命令卸载它。
注意:
从 Volta 0.9.0 开始,还可以使用包管理器使用npm uninstall --global
或yarn global remove
卸载包
volta pin
volta pin 这个命令用于将项目的运行时或包管理器固定到特定的版本。这确保了所有团队成员在运行该项目时都使用相同的 Node.js 或 npm 版本。
注意:
volta pin仅适用于节点和包管理器(例如npm或Yarn)。对于依赖项,应该使用npm install
或yarn add
来更新所选版本。
volta list
volta list 这个命令用于显示当前的工具链。它列出了所有已安装的 Node.js 和 npm 版本。
volta completions
volta completions 这个命令用于生成 Volta 的自动补全脚本。这可以简化在命令行中使用 Volta 的过程。
volta which
volta which 命令将解包Volta的垫片并找到Volta将启动的实际二进制文件。
volta setup
volta setup 这个命令用于为当前用户或 shell 启用 Volta。它通常在安装 Volta 后运行,以确保 Volta 在您的环境中正确配置。
在 Unix 上,volta setup 将使用以下列表搜索配置文件脚本:
- ~/.profile
- ~/.bash_profile
- ~/.bashrc
- ~/.zshrc
- ~/.config/fish/config.fish
- PROFILE 环境变量的值
对于存在的每个文件,volta 安装程序将对其进行修改,以包含定义 VOLTA_HOME 的行,并将 $VOLTA_HOME/bin 添加到 PATH 环境变量中。如果当前 shell 的配置文件(使用 $SHELL 环境变量检测)不存在,则如果可能,将使用适当的内容创建该文件。
在 Windows 上,volta 设置将修改 User Path 环境变量以包含填充码目录 (%LOCALAPPDATA%\Volta\bin)
volta run
volta run 这个命令的主要用途是在不改变全局 Node.js 环境的情况下,运行特定版本的 Node.js
- 任何没有直接指定版本的工具都将由 Volta 的常规上下文检测确定其版本,使用项目中的固定版本或默认版本。
- –no-yarn 标志允许您覆盖该决定,并强制在运行命令时环境中不包含任何 yarn。同样,–bundled-npm 标志允许您强制 npm 使用与 Node 捆绑的版本并忽略任何自定义版本。
- 还可以使用 --env NAME=value 选项指定要传递给命令的自定义环境变量。
注意:
版本设置必须位于要运行的命令之前。命令之后的任何内容都将被视为参数,Volta 不会读取
volta help
打印 Volta 的帮助信息
建议
个人觉得目前保持观望,并且watch,生态并没那么完善,盲目使用会遇到很多问题。
就比如使用它设置项目的nodejs跟yarn的版本
volta pin node@20.16
volta pin yarn@1.19
volta会在package.json生成对应配置
"volta": {
"node": "20.16.0",
"yarn": "1.19.2"
}
然后这个项目使用volta的人都会获得相同的版本
node --version # 20.16.0
yarn --version # 1.19.2
但是你怎么能保证所有人都安装volta呢,除非特别规范的团队可以做到,开发工具ide等等的统一,不然没使用volta的人还是得自己手动安装,
而且volta跟nvm是有冲突的,你必须先把nvm相关的东西卸载干净了再去使用
还有就是使用pnpm好像也有一些问题,具体没仔细看是啥。