V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
kenshin
V2EX  ›  分享创造

GNVM -- 基于 Windows 的 Node.exe 多版本管理工具

  •  1
     
  •   kenshin ·
    kenshin · 2014-05-30 16:08:51 +08:00 · 11513 次点击
    这是一个创建于 3624 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于开发的要求,需要在本地配置不同版本的node.exe,而开发环境是Win,所以无法使用nvm,而nvmw又不是特别好使,因此索性自己写了一个。

    代码已经放在github,不过没什么特别的地方,就是一个自动化的CLI工具,节省了手动下载/配置的麻烦。

    PS, 为什么用GO写,一来练练手,二来它可以生成exe,符合单文件、CLI的需求 :)

    文档(详细介绍)
    https://github.com/kenshin/gnvm

    下载地址
    在github上面有,E文的在Box,中文的在百度网盘中。

    功能(只列举了几种)
    - 全命令行操作,功能类似nvm, nvmw
    - 支持同时安装不同版本的node.exe
    - 支持升级本地node.exe到最新稳定版(Latest Version)
    - 支持自定义库,默认为: http://nodejs.org/dist/
    - 支持下载最新版本的NPM
    - 管理本机全部的node.exe

    截图
    第 1 条附言  ·  2014-05-30 21:59:04 +08:00
    本地未安装node.js时,下载gnvm.exe后,最少两个命令:
    - gnvm install latest
    - gnvm install npm

    本地安装node.js时,多版本切换,下载gnvm.exe后,最少两个命令:
    - gnvm install 0.11.1 0.11.2 0.11.3
    - gnvm use 0.11.1
    第 2 条附言  ·  2014-06-01 16:38:19 +08:00
    除了网盘下载外,新增加几种下载方式:

    - 使用go get
    go get github.com/Kenshin/gnvm

    - 使用git clone(我把binary放到了另外的repo里面)
    git clone [email protected]:Kenshin/gnvm-bin.git

    - 使用curl
    curl -O https://github.com/Kenshin/gnvm-bin/blob/master/32-bit/gnvm.exe
    curl -O https://github.com/Kenshin/gnvm-bin/blob/master/64-bit/gnvm.exe
    第 3 条附言  ·  2014-06-02 17:03:23 +08:00
    如果在使用 gnvm install 下载 node.exe 较慢,可以改用国内七牛提供的镜像
    http://dist.u.qiniudn.com

    操作步骤:
    gnvm config registry dist.u.qiniudn.com

    另外,注意的是,七牛提供的镜像更新要比Node.js官网慢些 :)
    第 4 条附言  ·  2014-06-03 09:44:51 +08:00
    如果没有使用多版本Node.js的场合,也可以把gnvm当作Node.js版本升级器,假设:

    - 本地Node.js版本为0.10.26
    - 官网Node.js版本为0.10.28

    把gnvm.exe放到node.exe相同目录,使用:
    gnvm update latest -g

    即可升级成功。

    第 5 条附言  ·  2014-06-06 13:29:24 +08:00
    Version 0.1.1 2014-06-06 发布,是小改版,功能没有增加,只是优化了部分代码以及修复了一个非常规Bug,使用:
    gnvm version -r 查看CHANGLOG

    http://imgur.com/hEyXZnl.png
    第 6 条附言  ·  2014-07-15 15:37:39 +08:00
    Version 0.1.2 2014-07-15 发布,同样为小改版,功能没有增加。
    exe为go version 1.3编译,并且修复了gnvm update latest -g在某些环境下偶尔出现无法成功更新的问题。

    gnvm version -r 查看CHANGLOG

    PS:nodejs.org的latest version更新为0.10.29,使用gnvm update latest -g升级本地node.exe为0.10.29 :)
    第 7 条附言  ·  2014-07-22 10:24:25 +08:00
    前两天录了一段操作,应该会更直观些 :)

    第 8 条附言  ·  2014-07-23 18:07:50 +08:00
    Version 0.1.3 2014-07-23 发布,加入:
    当node.exe被占用时使用gnvm use的处理。虽然是小改版,但建议升级!
    gnvm version -r 查看CHANGLOG
    27 条回复    2014-07-19 16:23:10 +08:00
    kenshin
        1
    kenshin  
    OP
       2014-05-30 16:44:37 +08:00
    ("▔□▔)
    貌似应该发到 go/nodejs 节点...
    66beta
        2
    66beta  
       2014-05-30 16:49:32 +08:00
    俺用 nodist
    kenshin
        4
    kenshin  
    OP
       2014-05-30 17:01:37 +08:00
    @66beta
    嗯,nodist也不错,不过,可以试试gnvm :)

    @airyland
    看此图的左上角,coggle,不错的工具,初看域名以为是G家的 ( ̄▽ ̄")
    andyhu
        5
    andyhu  
       2014-05-30 17:02:31 +08:00   ❤️ 1
    @airyland 同问

    @kenshin 支持楼主,很不错的工具
    kenshin
        6
    kenshin  
    OP
       2014-05-30 17:08:44 +08:00
    @andyhu
    谢谢支持,思维导图是 https://coggle.it/ 其实上条回复已经写了 :)
    hester
        7
    hester  
       2014-05-30 20:19:49 +08:00 via Android
    @kenshin
    不错的命令行工具,功能比nvmw靠谱,比配置比nodist简单些。
    georgetso
        8
    georgetso  
       2014-05-30 21:39:15 +08:00
    nodejs跟ruby一样对版本要求严格?
    ruby真心坑爹货啊,用redmine和插件,每次部署N久,就是版本问题,哎
    kenshin
        9
    kenshin  
    OP
       2014-05-30 22:04:51 +08:00 via Android
    @georgetso
    不同版本有时会产生性能差异 :(
    不过,gnvm也可以当作node.js的安装/工具,至少节省了手动下载的步骤 :)


    @hester
    谢谢,能解决实际问题就好!
    Viztor
        10
    Viztor  
       2014-05-30 22:42:46 +08:00
    索性自己写了一个
    kenshin
        11
    kenshin  
    OP
       2014-05-30 22:49:52 +08:00 via iPad
    @Viztor
    额,什么情况?
    infinte
        12
    infinte  
       2014-05-30 23:21:43 +08:00
    控制台那个 lambda,cmder 吧
    kenshin
        13
    kenshin  
    OP
       2014-05-31 07:35:10 +08:00 via Android
    @infinte
    是的。
    kenshin
        14
    kenshin  
    OP
       2014-05-31 09:02:13 +08:00
    百度网盘导致屏蔽了分享!!!
    也是我手贱,为了下载速度快,把下载地址放到了百度网盘上...

    暂时可以使用Box的下载地址:
    32-bit: https://app.box.com/gnvm/1/2014967291
    64-bit: https://app.box.com/gnvm/1/2014967689

    PS,有没有可以显示下载次数,速度可以接受的网盘,推荐一个...
    hester
        15
    hester  
       2014-05-31 21:15:08 +08:00 via Android
    @kenshin
    可以试试google code,有下载次数。
    这个工具真心不错,希望可以坚持下去,安装/配置上比nodist方便。
    kenshin
        16
    kenshin  
    OP
       2014-06-01 11:28:58 +08:00 via Android
    @hester
    谢谢,因为自己也会用,所以肯定会更新下去。
    有需求的话,可以随便提,包括各种喷 :-D
    kenshin
        17
    kenshin  
    OP
       2014-06-01 16:37:30 +08:00
    之前有些V友反应下载的问题,所以刚刚增加了几种方式的下载:

    - 使用go get
    go get github.com/Kenshin/gnvm

    - 使用git clone(我把binary放到了另外的repo里面)
    git clone [email protected]:Kenshin/gnvm-bin.git

    - 使用curl
    curl -O https://github.com/Kenshin/gnvm-bin/blob/master/32-bit/gnvm.exe
    curl -O https://github.com/Kenshin/gnvm-bin/blob/master/64-bit/gnvm.exe

    世界终于清爽了 :)
    leohxj
        18
    leohxj  
       2014-06-02 16:17:21 +08:00   ❤️ 1
    不错,感谢!
    kenshin
        19
    kenshin  
    OP
       2014-06-02 16:58:20 +08:00
    @leohxj
    谢谢,能解决实际问题就好 :)
    chshouyu
        20
    chshouyu  
       2014-06-06 14:04:49 +08:00
    使用多个版本的node是什么情况下会呢?我怎么从来没遇到用多个版本的情况,都是用最新版
    kenshin
        21
    kenshin  
    OP
       2014-06-06 14:24:37 +08:00
    @chshouyu
    Node.js版本之间的性能有差别,因此会有这样的需求。例如:
    在某些高版本中的性能要比低版本的好些,gnvm解决了繁琐的手动切换版本的工作。

    假如暂时没有这方面的需求,也可以把gnvm当作单纯的Node.js升级器,可以看“第 4 条附言”的内容。 :)
    NemoAlex
        22
    NemoAlex  
       2014-06-06 14:32:26 +08:00
    @chshouyu 那是因为你还没有入坑
    Viztor
        23
    Viztor  
       2014-06-17 22:55:30 +08:00
    @kenshin 不是有一个段子么。
    大神用的不顺手以后,索性自己写了一个,然后原版就死了。
    kenshin
        24
    kenshin  
    OP
       2014-07-08 16:31:19 +08:00
    @Viztor
    原来如此,后知后觉了 ⊙.⊙...
    coolicer
        25
    coolicer  
       2014-07-16 15:29:42 +08:00   ❤️ 1
    感谢分享,感谢创造
    dryyun
        26
    dryyun  
       2014-07-18 17:20:43 +08:00   ❤️ 1
    不错的样子。
    kenshin
        27
    kenshin  
    OP
       2014-07-19 16:23:10 +08:00
    @coolicer @dryyun
    谢谢 :)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   960 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:07 · PVG 07:07 · LAX 16:07 · JFK 19:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.