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

相关推荐
代码老y20 分钟前
十年回望:Vue 与 React 的设计哲学、演进轨迹与生态博弈
前端·vue.js·react.js
一条上岸小咸鱼26 分钟前
Kotlin 基本数据类型(五):Array
android·前端·kotlin
大明8829 分钟前
用 mouseover/mouseout 事件代理模拟 mouseenter/mouseleave
前端·javascript
小杨梅君31 分钟前
vue3+vite中使用自定义element-plus主题配置
前端·element
一个专注api接口开发的小白36 分钟前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
前端·数据挖掘·api
林太白36 分钟前
Nuxt.js搭建一个官网如何简单
前端·javascript·后端
晴空雨37 分钟前
一个符号让 indexOf 判断更优雅!JavaScript 位运算的隐藏技巧
前端·javascript
摸着石头过河的石头37 分钟前
前端调试全攻略:从PC到移动端的一站式实战指南
前端·debug
小猪猪屁39 分钟前
🚀 用 Nuxt3 打造公司官网:一场从 0 到 1 的实战冒险
前端
傅里叶1 小时前
Flutter在OrangePi 5 Plus上视频播放锁死问题
前端·flutter