V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
azev
V2EX  ›  Node.js

打算学下 node.js,请问 nvm 是标配吗?

  •  
  •   azev · 2024-07-25 08:15:54 +08:00 · 10416 次点击
    这是一个创建于 403 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过 nvm 来安装和切换,还是只装个最新版 node.js 就行了?

    81 条回复    2024-07-26 09:36:37 +08:00
    skuuhui
        1
    skuuhui  
       2024-07-25 08:19:59 +08:00
    如果只是学习,装个常用版本就行了。
    bboring
        2
    bboring  
       2024-07-25 08:31:35 +08:00   ❤️ 7
    我用 volta
    godwei
        3
    godwei  
       2024-07-25 08:36:17 +08:00
    项目多的话还是装一个吧
    vituralfuture
        4
    vituralfuture  
       2024-07-25 08:43:14 +08:00 via Android
    只有 node22 不兼容的时候才会用 nvm 切换到低版本 node
    dfkjgklfdjg
        5
    dfkjgklfdjg  
       2024-07-25 08:43:49 +08:00
    刚开始学可以不用装,直接装 LTS 的 Node 就好了。
    等开始维护项目了,再装 Node 版本管理器也不迟。

    如果比较喜欢尝试流行的东西,可以考虑试试 [volta]( https://github.com/volta-cli/volta) 或者 [fnm]( https://github.com/Schniz/fnm)
    [科普文:用锈化的 fnm 管理 Node.js 版本 - 知乎]( https://zhuanlan.zhihu.com/p/587008009)
    bytesfold
        6
    bytesfold  
       2024-07-25 08:47:07 +08:00 via iPhone
    事实上是一些老的别人的项目不用 nvm 切换老的版本运行不起来
    crysislinux
        7
    crysislinux  
       2024-07-25 08:48:05 +08:00 via Android
    nvm 性能差,每次打开 terminal 都会受很大影响,建议 fnm ,装一个也不费事,虽然你自己用装个最新的就行,但是 clone 别人的代码人家可能限制了版本。
    TimPeake
        8
    TimPeake  
       2024-07-25 08:51:07 +08:00   ❤️ 1
    nvm npm , 应该都是“上个世纪的”了吧(可能这么说有点夸张), 现在的标配应该是 pnpm , volta 吧
    Imindzzz
        9
    Imindzzz  
       2024-07-25 08:51:12 +08:00 via Android   ❤️ 7
    不是很懂这个问题的目的,你提问这时间,早就安装完 nvm 再用 nvm 安装完最新版 node 了
    jydeng
        10
    jydeng  
       2024-07-25 08:51:20 +08:00
    不需要
    wu67
        11
    wu67  
       2024-07-25 08:52:42 +08:00
    项目多的, 不上 nvm 也得上 docker, 不用关心什么性能不性能的问题, 哪个方便用哪个
    lukeding9627
        12
    lukeding9627  
       2024-07-25 08:54:56 +08:00
    volta 吧,方便 ci/cd ,nvm 跑 ci/cd 没弄过
    yingqiuQAQ
        13
    yingqiuQAQ  
       2024-07-25 08:55:17 +08:00
    学习 那就是最新的
    cleanery
        14
    cleanery  
       2024-07-25 08:59:54 +08:00   ❤️ 1
    @TimPeake npm 也在进化, 新版的 npm 很快了. 而且 pnpm 对于某些项目还是不太兼容. 就算使用参数强制依赖平铺也一样有问题, 表现是工程没有报错但是部分功能不正常/工程直接无法启动
    murmur
        15
    murmur  
       2024-07-25 09:03:05 +08:00
    nvm 原生支持 windows ,volta 不行
    murmur
        16
    murmur  
       2024-07-25 09:03:57 +08:00
    *不好意思看错了,当我没回
    libook
        17
    libook  
       2024-07-25 09:04:36 +08:00 via Android
    不需要,先写上代码,其他的慢慢了解就行
    TimPeake
        18
    TimPeake  
       2024-07-25 09:04:52 +08:00
    @cleanery 你说的这些问题确实是,尤其是一些模版 admin 类 的项目,我这边 pnpm 也是经常跑不起来。 但是新项目 pnpm , volta 是绝对的趋势了
    coolair
        19
    coolair  
       2024-07-25 09:05:29 +08:00
    pnpm
    hevi
        20
    hevi  
       2024-07-25 09:09:06 +08:00
    我平时用 pm2 去弄部署的事,配合 fnm 会有路径问题,用 nvm 就没事,仅供参考
    chenliangngng
        21
    chenliangngng  
       2024-07-25 09:11:33 +08:00
    学习不用
    工作要用
    supuwoerc
        22
    supuwoerc  
       2024-07-25 09:21:53 +08:00
    volta
    yaodong0126
        23
    yaodong0126  
       2024-07-25 09:22:40 +08:00
    没有什么标配不标配,工具是为人服务的,node 版本管理工具有很多,自己用起来没问题的我认为都可以,我写了 10 年 node ,最讨厌那些吹嘘什么什么最好,什么什么第一的言论,每个工具都有它适用的场景,你不会用或者用的不好,那是你的问题,水平不行别找客观原因
    ruanimal
        24
    ruanimal  
       2024-07-25 09:23:41 +08:00
    多语言的人,用 vfox 更省事
    q2677855779
        25
    q2677855779  
       2024-07-25 09:32:33 +08:00
    nvm 管理起来也方便,推荐 nvm 吧,很简单的
    enchilada2020
        26
    enchilada2020  
       2024-07-25 09:34:49 +08:00 via Android
    @yaodong0126 请教一下怎样系统学 Node 有什么比较好的最佳实践可以参考吗 现在用是会用 但总觉得太碎了 还经常能搜到比较老的写法之类的 官方文档感觉写得很差 纯 API 罗列 像在读字典 看着头疼 有些细节也描述得不到位
    yanqing07
        27
    yanqing07  
       2024-07-25 09:35:18 +08:00
    @TimPeake #8 只要有人维护都是要好工具,管它是上上个世纪。而且,用的人多也是参考标准之一,人多用才能修正好多 bug 。用个所谓的“前沿”工具,提个 bug 没人修,上网搜也没解决方案,这就是为项目埋坑
    g1vemep0wer
        28
    g1vemep0wer  
       2024-07-25 09:38:07 +08:00
    装一个吧,如果要运行不止一个 node 项目,我都工作几年了才用 nvm ,之前都是手动升级 node 版本
    CHTuring
        29
    CHTuring  
       2024-07-25 09:46:49 +08:00
    nvm 装一个也就几分钟,命令也就几个,没有学习成本。
    itbeihe
        30
    itbeihe  
       2024-07-25 09:47:44 +08:00
    装一个吧,历史老项目,新 node 根本跑不起来。
    yaodong0126
        31
    yaodong0126  
       2024-07-25 09:53:32 +08:00   ❤️ 1
    @enchilada2020 我倒觉得 node 的官方文档算是不错的了,我写 node 只看官方文档基本可以解决 99%的问题,偶尔遇到示例欠缺的,可能会去其他地方搜一搜,你说的所谓最佳实践不太可能有,不光是 node 的其他语言也一样,网上的所谓最佳实践,往往都是一些最基础的用法,甚至很多参数都直接用默认的,如果这样带到生产环境中将会是一场灾难
    我认为的最佳实践,只有你在项目中亲身经历了,才可以称为最佳实践,比如 node 的流,真正能用明白的,万分之一,所以我的建议是做项目,不要光靠网上的例子学,基本学不到什么有深度的东西
    hymxm
        32
    hymxm  
       2024-07-25 10:12:57 +08:00   ❤️ 1
    看到没 这就是前端 (doge
    h1104350235
        33
    h1104350235  
       2024-07-25 10:24:28 +08:00
    需要 nvm,新旧项目依赖的版本不一样,目前我工作用到的版本就有四个
    ysc3839
        34
    ysc3839  
       2024-07-25 10:25:34 +08:00 via Android
    我推荐用 fnm 。nvm 的性能很差,还不支持 Windows 。
    lisongeee
        35
    lisongeee  
       2024-07-25 10:29:05 +08:00
    如果觉得装 nodejs 麻烦,不如直接在用 https://stackblitz.com/ 在浏览器运行 nodejs
    pkoukk
        36
    pkoukk  
       2024-07-25 10:31:08 +08:00   ❤️ 1
    屁大点事还要问一下..不敢想你要真学起来得有多纠结
    yaodong0126
        37
    yaodong0126  
       2024-07-25 10:42:00 +08:00
    nvm 性能差?有多差?一个切换 node 版本的东西,用的到什么性能,实在不行咱换台电脑吧
    incubus
        38
    incubus  
       2024-07-25 10:44:34 +08:00
    @ysc3839 你说的不支持,包含这个吗? https://github.com/coreybutler/nvm-windows
    HappyAndSmile
        39
    HappyAndSmile  
       2024-07-25 10:48:26 +08:00
    nvm 确实挺影响 terminal 的,所以我写了 shell 方法,load_nvm, 用到时,才加载
    MEIerer
        40
    MEIerer  
       2024-07-25 10:51:59 +08:00
    nvm ,js 最需要的就是灵活性,有啥能增加灵活的都上 dog.jpg
    m319
        41
    m319  
       2024-07-25 10:53:56 +08:00
    看个人习惯吧,我选 fnm
    CodingNaux
        42
    CodingNaux  
       2024-07-25 10:56:39 +08:00
    用 docker 吧,nvm 太低级
    Phariel
        43
    Phariel  
       2024-07-25 10:59:45 +08:00
    装个 LTS 就行了 nvm 如果只是玩玩没必要装
    9A0DIP9kgH1O4wjR
        44
    9A0DIP9kgH1O4wjR  
       2024-07-25 11:01:12 +08:00
    不是标配 除非有特别老的项目
    ETiV
        45
    ETiV  
       2024-07-25 11:01:35 +08:00 via iPhone
    真·差生文具多😂
    想学直接装了就学起来了 哪有空搞这些花头
    jqtmviyu
        46
    jqtmviyu  
       2024-07-25 11:05:28 +08:00
    系统装个 lts 的 node, 然后用 fnm 装几个旧版本的. 自己的项目就用 lts, 老项目就建个 .node-version 会自动切换

    全局包用 npm 装到 lts 里, 方便升级. 开发包就用 pnpm, 节省空间.
    zackzergzeng
        47
    zackzergzeng  
       2024-07-25 11:05:46 +08:00
    就 nvm 装不装的问题就能造成这么大的分歧吗🤣
    kdwnil
        48
    kdwnil  
       2024-07-25 11:08:51 +08:00 via Android
    问了说明不需要,装最新的 nodejs 就够用。需要时自然会装的,至于选 nvm fnm 还是 volta 就看个人喜好了
    LavaC
        49
    LavaC  
       2024-07-25 11:08:59 +08:00
    看楼上都在说 nvm 不好,但一路用下来也没感觉太大问题,仅仅只是切换 node 版本也谈不上对性能要求这么敏感
    Cbdy
        50
    Cbdy  
       2024-07-25 11:10:52 +08:00
    不是,装个最新版就可以了
    DeWjjj
        51
    DeWjjj  
       2024-07-25 11:35:19 +08:00
    当你问这个问题的时候=没有老项目,那你直接装最新的 lts 就行。
    yier4ha
        52
    yier4ha  
       2024-07-25 11:44:07 +08:00
    @ysc3839 我用的 nvm 支持 Windows
    beginor
        53
    beginor  
       2024-07-25 11:51:19 +08:00 via Android
    直接 pnpm ,node 版本管理,包管理, 工作区, 一个全搞定,
    n18255447846
        54
    n18255447846  
       2024-07-25 11:53:08 +08:00
    下载编译好的二进制包,直接运行
    19c
        55
    19c  
       2024-07-25 11:58:28 +08:00   ❤️ 2
    个人认为在入门阶段追求“最佳实践”是一件性价比很低、甚至可以被称为浪费时间的行为
    ysc3839
        56
    ysc3839  
       2024-07-25 11:59:38 +08:00 via Android
    @incubus 请仔细看看这个项目的 README:
    This is not the same thing as nvm!
    The original nvm is a completely separate project for Mac/Linux only. This project uses an entirely different philosophy and is not just a clone of nvm.

    除此之外,此项目也有许多不如 fnm 的地方:之前的版本是不能直接 nvm install 10 来安装 Node.js 10.x 的最新版的,新版本是否支持我不知道。此项目更新很缓慢,目前最新版还是 2023 年 11 月发布的。
    sinalvee
        57
    sinalvee  
       2024-07-25 12:00:53 +08:00
    nvm 不好的点在于如果不自己搞一下懒加载的话,他会影响 terminal 的启动速度
    linglongll
        58
    linglongll  
       2024-07-25 12:07:03 +08:00
    咱用 n
    hsuyeung
        59
    hsuyeung  
       2024-07-25 12:22:20 +08:00 via iPhone
    我也是工作后一堆历史项目对版本有要求才用上了 nvm ,只是自己学习的话可以不用。
    zbowen66
        60
    zbowen66  
       2024-07-25 12:22:27 +08:00
    我近两个月经常用 `bun run dev`,目前没遇到坑
    vipfts
        61
    vipfts  
       2024-07-25 12:29:22 +08:00   ❤️ 2
    前端的轮子都能组成一列火车了
    461229187
        62
    461229187  
       2024-07-25 13:10:35 +08:00
    @bboring 感谢,试了一下,nvm 真的可以滚了
    weijancc
        63
    weijancc  
       2024-07-25 13:38:22 +08:00
    @TimPeake #8 pnpm 会出现打包后的资源和开发时不一致的情况, 我现在已经改用 yarn 了.
    YuuuuuuH
        64
    YuuuuuuH  
       2024-07-25 13:52:42 +08:00
    @bboring +1 volta 很好用
    BealuoC
        65
    BealuoC  
       2024-07-25 13:55:27 +08:00
    volta 无敌
    a134698815
        66
    a134698815  
       2024-07-25 14:25:50 +08:00
    bun
    Immortal
        67
    Immortal  
       2024-07-25 14:44:57 +08:00
    nvm 巨影响 shell 的启动速度,慎用
    BaymaxK
        68
    BaymaxK  
       2024-07-25 15:02:08 +08:00
    0o0O0o0O0o
        69
    0o0O0o0O0o  
       2024-07-25 15:17:39 +08:00 via iPhone
    @yaodong0126 #37
    @LavaC #49

    可能是因为你们不是终端用户,想象一个最简单的场景:从终端进入 projectA ,你要 nvm use ,再进入 projectB ,你又要 nvm use ,重度终端用户一般受不了这种操作,多半会选择与 shell 集成来实现自动化,以至于每进入一个有 .nvmrc 的目录都会自动执行,而几百毫秒的耗时会让重度终端用户有一种吃饭硌牙的不适感。
    mgcnrx11
        70
    mgcnrx11  
       2024-07-25 15:30:10 +08:00
    https://docs.volta.sh/advanced/pnpm volta 不是对 pnpm 支持不算完善吗?是 pnpm 喔? volta 用 pnpm 的影响有点大啊
    blur1119
        71
    blur1119  
       2024-07-25 15:39:35 +08:00
    很奇怪,装一个 nvm 也不费劲,一装解千愁,为啥专门提问呢
    giserman001
        72
    giserman001  
       2024-07-25 16:04:23 +08:00
    win10 环境下: 为啥.nvmrc 文件无效?
    aoyi
        73
    aoyi  
       2024-07-25 16:04:48 +08:00
    fnm
    vk4LNh8gE08SBd9V
        74
    vk4LNh8gE08SBd9V  
       2024-07-25 16:10:03 +08:00
    @giserman001 windows 没这功能 mac 才有
    BG7ZAG
        75
    BG7ZAG  
       2024-07-25 16:30:55 +08:00
    fnm ,win 上喜欢界面可以用 nvm-desktop
    juntaol678
        76
    juntaol678  
       2024-07-25 16:59:15 +08:00
    感觉有点走偏了呀,nvm 就只是个版本管理工具而已,你愿意装就装,不装也行,这跟学 node 根本没什么联系。
    BeautifulSoap
        77
    BeautifulSoap  
       2024-07-25 17:03:10 +08:00
    请不要学都还没开始学就开始在选工具上浪费时间

    直接装个 nodejs lts ( v20 ),然后开始学才是真的。包管理就用自带的 npm 。别折腾花活。等你熟练了自然就有自己需求了
    leo72638
        78
    leo72638  
       2024-07-25 18:11:03 +08:00
    只学习不用装,如果手上项目多,需求的 node 版本还不同才需要装
    cleanery
        79
    cleanery  
       2024-07-26 09:08:25 +08:00
    @weijancc 我使用 ReFS 把缓存和代码放在一个 vhd 虚拟分区里, 可以利用上 ReFS 的块克隆特性, 速度还是飞快的.
    yaodong0126
        80
    yaodong0126  
       2024-07-26 09:19:36 +08:00
    @0o0O0o0O0o 不要定义我的场景,我不光用终端,我还在 vim 写代码,nvm 的 100 毫秒我不在乎,你们嫌慢那是你们的事,天天折腾工具也是你们的事,我已经写完代码赚到钱了,没空管这些
    0o0O0o0O0o
        81
    0o0O0o0O0o  
       2024-07-26 09:36:37 +08:00
    @yaodong0126 #80 那就祝你发财吧。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1301 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:45 · PVG 07:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.