使用volta统一了前端各项目的node版本

逛帖子的过程中看到《我写了一个根据项目自动切换node版本的插件,再也不用手动使用命令切换了》这篇文章,对于node版本管理很感兴趣,公司项目存在三个版本的node:20、16、12,平时项目开发都是通过n/nvm来回切换,比较低效。在评论中发现有人提到volta工具,抱着试试的态度,发现还挺好用的。

优点

  1. 方便项目级别管理node版本,只要在package.json增加volta-node版本,自动切换到对应的版本
  2. 相比于vscode插件,volta可以在命令行运行,比如teminal
  3. 公司设备都是mac,volta可以直接命令行安装(windows官网也可以用,还没测试)
  4. 切换速度比较好,体验较好(rust编写)

公司项目整合效果

各项目同打上了volta-node标识,node版本跟jenkins打包的版本保持统一。可以不同版本项目同时跑起来了,再也不用来回切node版本了。

下面列出使用的文档以及踩的坑

volta官网

docs.volta.sh/guide/#how-...

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

常见疑问

  1. 安装可能遇到问题

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
  1. 卸载volta全局安装的node包

uninstall issue

当前全局安装的node包,通过uninstall 无法卸载。需要手动解决

javascript 复制代码
removed the node version from `~/.volta/tools/user/platform.json`

3. 跟n,nvm全局管理工具不冲突

可以项目采用volta管理node,全局采用其他,当然直接采用volta管理全局node也可以

最后

以上就是volta统一项目的过程,有任何疑问可以评论区交流

相关推荐
Web极客码1 分钟前
深入了解WordPress网站访客意图
服务器·前端·wordpress
幺风33 分钟前
Claude Code 源码分析 — Tool/MCP/Skill 可扩展工具系统
前端·javascript·ai编程
vjmap40 分钟前
唯杰地图CAD图层加高性能特效扩展包发布
前端·gis
ZC跨境爬虫44 分钟前
3D 地球卫星轨道可视化平台开发 Day7(AI异步加速+卫星系列精简+AI Agent自动评论)
前端·人工智能·3d·html·json
ID_180079054731 小时前
淘宝 API 上货 / 商品搬家 业务场景实现 + JSON 返回示例
前端·javascript·json
M ? A1 小时前
Vue 动态组件在 React 中,VuReact 会如何实现?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
vipbic1 小时前
独立开发复盘:我用 Uni-app + Strapi v5 肝了一个“会上瘾”的打卡小程序
前端·微信小程序
IT_陈寒2 小时前
Vite的热更新突然失效,原来是因为这个配置
前端·人工智能·后端
ZC跨境爬虫3 小时前
3D 地球卫星轨道可视化平台开发 Day8(分步渲染200颗卫星+ 前端分页控制)
前端·python·3d·重构·html
竹林8183 小时前
RainbowKit快速集成多链钱包连接,我如何从“连不上”到“丝滑切换”
前端·javascript