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

相关推荐
丁总学Java16 分钟前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
懒羊羊大王呀27 分钟前
CSS——属性值计算
前端·css
无咎.lsy1 小时前
vue之vuex的使用及举例
前端·javascript·vue.js
fishmemory7sec1 小时前
Electron 主进程与渲染进程、预加载preload.js
前端·javascript·electron
fishmemory7sec1 小时前
Electron 使⽤ electron-builder 打包应用
前端·javascript·electron
豆豆2 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
twins35203 小时前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky3 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~3 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
安冬的码畜日常3 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺