使用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统一项目的过程,有任何疑问可以评论区交流

相关推荐
江华森4 分钟前
前端构建工具 Webpack 速览
前端·webpack·node.js
谙忆102428 分钟前
HTTP 图片缓存实战:Cache-Control、ETag、内容哈希文件名与 CDN 回源到底怎么配
前端
小妖66636 分钟前
React input 输入卡顿问题
前端·javascript·react.js
এ慕ོ冬℘゜36 分钟前
JavaScript 数据类型检测与转换、运算符超全实战详解
前端·html
kyriewen1 小时前
我用 AI 写代码快了 3 倍——然后同事的 Code Review 全变成了我的
前端·程序员·ai编程
李明卫杭州2 小时前
Vue2 portal-target 组件与 Vue3 的针对性优化
前端·javascript·vue.js
Tyler_13 小时前
iOS PlayWright mcp server
前端·ios·ai编程
嘟嘟07173 小时前
从零理解 MCP:手写一个本地 MCP Server 并接入 LangChain Agent
前端·后端
cocoafei3 小时前
GPT-5.6 后,别再混淆 ChatGPT 和 Codex 额度了
前端·人工智能·chatgpt
你怎么知道我是队长3 小时前
JavaScript的函数介绍
开发语言·前端·javascript