安利一个 14 年撸的轮子(已更新) - 用 Go 语言 写的 Nodejs 多版本管理器
安利一个 14 年撸的轮子(已更新) - 用 Go 语言 写的 Nodejs 多版本管理器
gnvm
,是一个 windows
下 简单的 Node.js 多版本管理器,类似 nvmw | nodist 等。
原本是 14 年 为了学习 Go 语言
而建立的一个项目,后来一直没有维护,结果前阵子,陆陆续续的收到了 很多 issues ,既然有人用,本着不想挖坑不填的想法,又继续更新了。
先给个运行效果:
c:\> gnvm install latest 1.0.0-x86 1.0.0-x64 5.0.0
Start download Node.js versions [5.10.1, 1.0.0, 1.0.0-x86, 5.0.0].
5.10.1: 18% [=========>__________________________________________] 4s
1.0.0: 80% [==========================================>_________] 40s
1.0...: 50% [==========================>_________________________] 30s
5.0.1: 100% [==================================================>] 20s
End download.
c:> gnvm ls
5.1.1 – latest
1.0.0
1.0.0 – x86
5.0.0 – global
c:> gnvm use latest
Set success, current Node.js version is 5.10.0.
c:> gnvm update latest
Update success, current Node.js latest version is 5.10.0.
既然是个 轮子,总要有个 轮子 的样,相对与它的 前 /后 辈来说,具有如下的特点:
- 单文件,不依赖于任何环境。
- 下载即用,无需配置。
- 彩色日志输出。
- 支持多任务下载。
- 内置 TAOBAO,方便切换,也支持自定义。
- 支持
NPM
下载 /安装 /配置。 - 可以设定某个 本地已存在的
node.exe
为临时环境。( 性能对比时很有用 )
下载
- 32-bit | 64-bit 常用地址, Box ,速度稍慢
- 32-bit | 64-bit 备用地址,百度网盘,速度快
- 32-bit | 64-bit 备用地址, Github
- 已经安装了 go 的用户,使用
go get github.com/Kenshin/gnvm
- 已经安装了 git 的用户,使用
git clone [email protected]:Kenshin/gnvm-bin.git
- 已经安装了 curl 的用户,使用
curl -L https://github.com/Kenshin/gnvm-bin/blob/master/32-bit/gnvm.exe?raw=true -o gnvm.exe
curl -L https://github.com/Kenshin/gnvm-bin/blob/master/64-bit/gnvm.exe?raw=true -o gnvm.exe
安装
-
不存在 Node.js 环境
下载并解压缩
gnvm.exe
保存到任意文件夹,并将此文件夹加入到环境变量Path
。 -
存在 Node.js 环境
下载并解压缩
gnvm.exe
保存到Node.js
所在的文件夹。
验证
- 在
cmd
下,输入gnvm version
,输出版本说明
则配置成功。
截至到 0.2.0
版本所具有的功能:
config 配置 .gnvmrc
use 使用某个本地已存在的 Node.js 版本
ls 输出 [local] [remote] Node.js 版本
install 下载 /安装任意已知版本的 Node.js
uninstall 删除任意本地已存在的 Node.js
update 下载 Node.js latest 版本并更新到 .gnvmrc 里面
npm NPM 下载 /安装 /删除 管理
session 临时设定本地某个已存在的 Node.js 为 全局 Node.js
search 查询并且输出符合查询条件的 Node.js 版本详细信息的列表
node-version 输出 [global] [latest] Node.js 版本
reg 设定 .gnvmrc 属性值 [noderoot] 为 环境变量 [NODE_HOME],并加入到 Path 中
version 查看 gnvm 版本
顺便撸了个官网:
由于功能比较多,所以用 gitbook
构建了一个 API 文档
,地址:
上个全功能图谱:
写在最后的话:
不知道从什么时候开始,评判一个 项目的好坏标准变成了
Github
上的Start 数
,虽然有道理,但也挺无奈的。如果gnvm
真的好用,不需要请我喝杯咖啡,希望你能在 https://github.com/kenshin/gnvm 给个星,不为别的,只为让更多人了解到gnvm
。
希望 gnvm
能解决你在开发上的 痛点
。
一四年 十四年
图不错,用啥软件画的?
赞,前段时间在 github 上反馈过,没想到更新了,先 mark 一记。
ci server 上用得比较多吧
左上角, coggle
额,第一条回复就是个挑错哦 ~
5 楼 正解! 很靠谱的服务,我从 2014 年 开始使用的,到现在还没有挂。 (/≧▽≦)/
哦,老用户啊,就是因为你们的反馈,所以我才更新的,也感谢你们的使用和反馈。
新版本绝对如 『丝般滑顺的』 ~
不一定, gnvm 定位比较多样,你可以单纯的把它 当做 latest 版本升级器。 gnvm update latest -g 即可升级到最新版本。
感谢分享,之前用过一段时间,有段时间不好使了,没想到又更新了。
官网和文档的界面很漂亮啊,是用什么实现的?
开发的话一般选一个 LTS 版本吧,需要支持的版本列表扔到 ci 去,过了就过了,没过看一下差异做下兼容处理,大概就这样子。
感谢使用~
官网是自己撸的,纯静态页面,放到了 github 上面。
文档是 gitbook ,为了搭配官网,修改了 theme 。
好奇, 像注释 这种格式是人肉加上去的?
param:
- xxx : yyy
return:
- xxx : yyy
人肉,写 func 的时候,顺便加上了,当然格式是通过 TextExpander 自动加上的。
看起来不错, go get 啦
感谢使用~ :)
原来是你写的,老用户路过
原来是你写的,老用户路过
活捉老用户一名,感谢已发! (^^♪
好东西, 果断入教-. -
欢迎入教 (^^♪
看到你分享的14年就开始开发的,并且已经更新的Go语言编写的Node.js多版本管理器,这确实是一个很有意义的项目。在IT领域,能够持续维护和更新自己的项目,说明你对技术的热情和追求一直没有减退。
对于Node.js多版本管理器,它在前端开发、全栈开发等场景中有着广泛的应用。不同的项目可能需要不同版本的Node.js,因此一个高效、稳定的多版本管理器就显得尤为重要。
以下是一个简单的Go语言示例,展示了如何管理不同版本的Node.js(请注意,这只是一个非常基础的示例,实际项目可能需要更复杂的功能和错误处理):
package main
import (
"fmt"
"os/exec"
)
func main() {
versions := []string{"v14.17.0", "v16.13.0", "v18.4.0"}
for _, version := range versions {
cmd := exec.Command("nvm", "install", version)
err := cmd.Run()
if err != nil {
fmt.Println("Error installing Node.js version", version, ":", err)
} else {
fmt.Println("Successfully installed Node.js version", version)
}
}
}
在这个示例中,我们使用了exec.Command
来调用nvm
(Node Version Manager)来安装不同的Node.js版本。当然,实际的项目中你可能需要更复杂的逻辑来切换版本、处理依赖等。
希望你的项目能够持续为社区带来价值,也期待你在未来能够分享更多有趣的技术项目和心得。