使用Volta 解决多项目node版本不同的痛处

背景

最近嘛,终于忍受不了咯。由于项目众多,且历史背景厚重,所以存在了node的版本也众多,有:node8 node10 node14 node18及以上等等,

大家来回切换开发项目的时候也是不胜其烦,所以经调研有个工具还是很好用的,就是volta,可以每个项目单独维护node和npm版本,不用在关系node的版本切换,大家就可以专心搞业务了,是不是很开心,是不是很happy。那一起来操练起来,使用起来吧。此文本是基于 macOS来调试的哦,windows也类似就是安装不太一样。

安装 Volta

arduino 复制代码
curl https://get.volta.sh | bash

这个安装程序将自动更新控制台启动脚本

管理node

kotlin 复制代码
//在终端中输入
volta

volta install node@16//测试安装16的版本

volta install node // 安装最新版本

volta install node@14.15.5 // 切换版本 需要选择体具体的版本

node -v

查看已经安装过的node版本

arduino 复制代码
// 查看已经安装过的node版本
volta list node

固定node版本

kotlin 复制代码
// 在项目中这样会在package.json中增加 配置
volta pin node@16

"volta": {
    "node": "16.14.0",
}

卸载node

kotlin 复制代码
// 卸载某个版本的node
volta uninstall node@16

当然也可以安装npm 或者yarn 限制版本

kotlin 复制代码
// 固定其他的
volta pin npm@6.4.1
volta pin yarn@1.19

"volta": {
    "node": "16.14.0",
    "npm": "6.4.1",
    "yarn": "1.19.0"
}

然后在项目中使用就会在package.json 中增加一个配置

有了以上的配置后切换到不同的项目就会有不同的node使用了,不用再切换来切换去node 版本

arduino 复制代码
volta setup 为当前用户/shell 启用 volta
volta run 运行带有自定义Node、npm、pnpm和/或Yarn版本的命令
volta help 输出帮助信息

windows就借用下其他人写的咯,我自己没有去研究

对于 Windows,下载并运行 Windows 安装程序并按照说明操作。

彩蛋: 还可以管理其他的比如:vue-cli等等,这些自己去摸索吧...

问题

Pnpm 支持

对 pnpm 的支持目前是实验性的。要启用该功能,请确保环境变量 VoLTA_FEATURE_PNPM 设置为 1。在 Windows 上可以添加到环境变量中。在 Linux/Mac 上,您可以在配置文件脚本中设置该值(例如 .bash_profile.zshrc 或类似的脚本)。

已知的限制

全局安装:目前不支持全局安装(例如 pnpm install -g),并且会导致错误。

迁移 :目前还没有自动迁移功能,因此如果您以前将 pnpm 作为 Volta 全局文件安装,则需要通过调用 Volta install pnpm 手动重新安装它。在启用支持并重新安装之前,您可以通过 volta uninstall pnpm 卸载之前安装的 pnpm 包。一旦切换到本机 pnpm 支持,由于目前缺乏卸载实现,可能无法通过调用相同的命令来删除孤立的旧 pnpm 包

相关推荐
dly_blog1 小时前
Vue 响应式陷阱与解决方案(第19节)
前端·javascript·vue.js
消失的旧时光-19431 小时前
401 自动刷新 Token 的完整架构设计(Dio 实战版)
开发语言·前端·javascript
console.log('npc')1 小时前
Table,vue3在父组件调用子组件columns列的方法展示弹窗文件预览效果
前端·javascript·vue.js
用户47949283569152 小时前
React Hooks 的“天条”:为啥绝对不能写在 if 语句里?
前端·react.js
我命由我123452 小时前
SVG - SVG 引入(SVG 概述、SVG 基本使用、SVG 使用 CSS、SVG 使用 JavaScript、SVG 实例实操)
开发语言·前端·javascript·css·学习·ecmascript·学习方法
用户47949283569152 小时前
给客户做私有化部署,我是如何优雅搞定 NPM 依赖管理的?
前端·后端·程序员
C_心欲无痕3 小时前
vue3 - markRaw标记为非响应式对象
前端·javascript·vue.js
qingyun9893 小时前
深度优先遍历:JavaScript递归查找树形数据结构中的节点标签
前端·javascript·数据结构
熬夜敲代码的小N3 小时前
Vue (Official)重磅更新!Vue Language Tools 3.2功能一览!
前端·javascript·vue.js
90后的晨仔3 小时前
用 Python 脚本一键重命名序列帧图片的名称
前端