逛帖子的过程中看到《我写了一个根据项目自动切换node版本的插件,再也不用手动使用命令切换了》这篇文章,对于node版本管理很感兴趣,公司项目存在三个版本的node:20、16、12,平时项目开发都是通过n/nvm
来回切换,比较低效。在评论中发现有人提到volta工具,抱着试试的态度,发现还挺好用的。
优点
- 方便项目级别管理node版本,只要在package.json增加volta-node版本,自动切换到对应的版本
- 相比于vscode插件,volta可以在命令行运行,比如teminal
- 公司设备都是mac,volta可以直接命令行安装(windows官网也可以用,还没测试)
- 切换速度比较好,体验较好(rust编写)
公司项目整合效果
各项目同打上了volta-node标识,node版本跟jenkins打包的版本保持统一。可以不同版本项目同时跑起来了,再也不用来回切node版本了。
下面列出使用的文档以及踩的坑
volta官网
mac安装方式
bash
# install Volta
curl https://get.volta.sh | bash
source ~/.bash_profile
安装好,vscode还是旧的版本,需要重启vscode生效
Mac 上 Node 的安装地址:
当你使用 Volta 来安装 Node.js 时,Node.js 不是安装在 Mac 上的传统位置(例如 /usr/local/bin
或 /opt
),而是安装在 Volta 的沙盒内。具体到文件系统路径,则大致如下:
- Volta 安装目录:
~/.volta
(在用户的主目录下) - Node 版本安装目录:
~/.volta/tools/image/node
(这里会包含不同版本的 Node.js 实例)
常见命令及踩坑
- pin: 不同项目node版本不同
shell
volta pin node@12
volta pin yarn@1.22.2
pin后,packag.json会产生volta标识(后续volta将会软链到对应的node包)
js
// package.json
{
"volta": {
"node": "16.15.0",
"yarn": "1.22.21"
}
}
- install: 全局安装node(将会覆盖n等安装的node版本)
shell
volta install node@12
常见疑问
- 安装可能遇到问题
github的volta的release无法下载下来,可以给github加上代理(这个加速也适合git clone加速拉取项目)
ruby
可能问题:
curl: (22) The requested URL returned error: 404
Error: Could not download Volta version ''. See https://github.com/volta-cli/volta/releases for a list of available releases
解决:
github加上代理
将volta.sh下载到本地
curl -k https://get.volta.sh > volta.sh
修改github源
# echo "https://mirror.ghproxy.com/https://github.com/volta-cli/volta/releases"
chmod +x volta.sh
运行
./volta.sh
- 卸载volta全局安装的node包
当前全局安装的node包,通过uninstall 无法卸载。需要手动解决
javascript
removed the node version from `~/.volta/tools/user/platform.json`
3. 跟n,nvm全局管理工具不冲突
可以项目采用volta管理node,全局采用其他,当然直接采用volta管理全局node也可以
最后
以上就是volta统一项目的过程,有任何疑问可以评论区交流