2024 年了你在用 npm / yarn / pnpm ?以及为什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
slowlyxixi
V2EX    Node.js

2024 年了你在用 npm / yarn / pnpm ?以及为什么?

  •  
  •   slowlyxixi 2024-11-08 15:50:52 +08:00 8791 次点击
    这是一个创建于 385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从 npm 到 yarn ,最近爱上了 pnpm 。

    59 条回复    2025-01-19 23:12:07 +08:00
    xiaojun996
        1
    xiaojun996  
       2024-11-08 15:55:32 +08:00   1
    已经用 pnpm 4 年了,第一次用它主要 2 个原因

    1. 不会有幽灵依赖
    2. 节约硬盘空间,有个 global 的 store 存 package
    DICK23
        2
    DICK23  
       2024-11-08 16:06:05 +08:00
    用的 bun,就为了 install 的时候提示信息少
    weijancc
        3
    weijancc  
       2024-11-08 16:08:16 +08:00
    Yarn, 以后有重新安装依赖会使用 bun, pnpm 之前用过一段时间, 但会出现打包后出现样式丢失的情况, 遂放弃
    renmu
        4
    renmu  
       2024-11-08 16:13:18 +08:00 via Android
    个人项目都转 pnpm 了
    jisuowei
        5
    jisuowei  
       2024-11-08 16:13:25 +08:00   7
    y a r n, 可以两只手各敲两个字母,p n p m 一只手挺累的,手动狗头
    IvanLi127
        6
    IvanLi127  
       2024-11-08 16:17:39 +08:00
    特简单的项目用 npm ,懒得折腾;日常用 pnpm ,感觉很好;支持 bun 运行的用 bun ,感觉也很好。 yarn 1 感觉没啥特别的地方,不怎么用。
    x009ba1
        7
    x009ba1  
       2024-11-08 16:20:31 +08:00   1
    yarn ,因为标志是猫咪
    gp0119
        8
    gp0119  
       2024-11-08 16:21:25 +08:00
    @jisuowei #5 zsh-abbr
    crysislinux
        9
    crysislinux  
       2024-11-08 16:22:29 +08:00 via Android   1
    我要坚持 npm 不动摇
    penisulaS
        10
    penisulaS  
       2024-11-08 16:29:13 +08:00
    用 npm ,因为没有频繁拉包的需求,npm 似乎也没啥问题
    kkocdko
        11
    kkocdko  
       2024-11-08 16:30:03 +08:00   4
    npm

    vscode 已经从 yarn 切换回 npm 。

    当你使用 npm 时,其他包管理器都要声称“兼容 npm”,你使用的是一个公认的子集,一个最大公约数,任何你这能跑但别人不能跑的东西,都是别人的责任。
    fov6363
        12
    fov6363  
       2024-11-08 16:32:52 +08:00
    pnpm 提供的 monorepo 能力太棒了
    zhhqiang
        13
    zhhqiang  
       2024-11-08 16:32:53 +08:00
    维护项目
    AV1
        14
    AV1  
       2024-11-08 16:37:21 +08:00
    用 npm 。
    每次安装、更新好依赖就打包成 node_modules.7z ,确保时间、空间上的一致性。
    xqk111
        15
    xqk111  
       2024-11-08 16:37:48 +08:00
    npm ,懒得折腾
    liuliumei
        16
    liuliumei  
       2024-11-08 16:38:39 +08:00
    pnpm monorepo
    Nyeshuai
        17
    Nyeshuai  
       2024-11-08 16:44:14 +08:00
    正常的跟时间走的用 pnpm, 老的还是 npm 控在文件夹内省些麻烦
    huijiewei
        18
    huijiewei  
       2024-11-08 16:53:25 +08:00   2
    @DOLLOR 惊呆,就没考虑二进制平台兼容性么
    molvqingtai
        19
    molvqingtai  
       2024-11-08 17:04:03 +08:00
    使用 pnpm ,npm 依赖问题太多了
    mandex
        20
    mandex  
       2024-11-08 17:13:27 +08:00
    yarn
    维护的都是老项目,懒得动
    QUC062IzY3M1Y6dg
        21
    QUC062IzY3M1Y6dg  
       2024-11-08 17:16:58 +08:00
    yarn 习惯了
    sworld233
        22
    sworld233  
       2024-11-08 17:30:58 +08:00
    一直用 pnpm
    tyrone2333
        23
    tyrone2333  
       2024-11-08 18:18:59 +08:00
    pnpm 跑很多老项目会有依赖问题运行不起来, 一直用 yarn
    Jinnrry
        24
    Jinnrry  
       2024-11-08 18:19:32 +08:00
    npm +1
    dcsuibian
        25
    dcsuibian  
       2024-11-08 18:27:28 +08:00 via Android
    npm 。其实我不是很在意那点硬盘空间,有代理的话下包其实也不会太慢。
    npm 主要好在它是自带的,有 node 就有 npm 。别人下了我的项目不用多余的步骤就能运行。
    但是其实 yarn 和 pnpm 我也在用,只不过是二开的项目,这种就是纯粹的作者用啥我用啥嘞
    sn0wdr1am
        26
    sn0wdr1am  
       2024-11-08 18:30:17 +08:00
    我支持 pnpm 做话事人,因为他好用,省事。
    TimPeake
        27
    TimPeake  
       2024-11-08 18:42:27 +08:00
    新项目用 pnpm ,老项目没法用, 只能无奈 npm
    54xavier
        28
    54xavier  
       2024-11-08 18:58:10 +08:00
    npm => cnpm => yarn => pnpm => nrm => npm
    flyinghigherair
        29
    flyinghigherair  
       2024-11-08 19:04:02 +08:00
    除非特殊情况,否则都是用安装 nodejs 时自带的 npm ,不喜欢装一大堆东西
    gogogo1203
        30
    gogogo1203  
       2024-11-08 19:10:02 +08:00
    必须是 pnpm, 因为快啊。npm i 要半天,换了 taobao 节点也不行。
    alias 永久改成 p, 每次都是 p i, p i , p i
    xlinux
        31
    xlinux  
       2024-11-08 19:31:15 +08:00
    @54xavier nrm ?不是同一个东西阿,怎么对比?
    oner
        32
    oner  
       2024-11-08 19:46:34 +08:00 via iPhone
    npm 从来没换过
    jinliming2
        33
    jinliming2  
       2024-11-08 20:05:34 +08:00
    @dcsuibian #25
    @flyinghigherair #29
    Node 现在自带了 corepack ,相当于 npm 、yarn 、pnpm 都自带了。package.json 里有 packageManager 字段的话会强制使用指定的包管理工具。
    dcsuibian
        34
    dcsuibian  
       2024-11-08 20:09:24 +08:00 via Android
    @jinliming2 我知道,但这个东西是实验性的,而且得在 node 16.13 以上才能用。
    而且确实属于多余的步骤。
    Kobayashi
        35
    Kobayashi  
       2024-11-08 21:48:35 +08:00   1
    @jisuowei alias yarn=pnpm 不用谢我朋友
    lerry
        36
    lerry  
       2024-11-08 23:32:00 +08:00
    npm 没啥问题,速度很快
    Xu3Xan89YsA7oP64
        37
    Xu3Xan89YsA7oP64  
       2024-11-08 23:33:36 +08:00
    @jisuowei #5 赶紧装上 ni 吧
    ob
        38
    ob  
       2024-11-08 23:35:30 +08:00 via Android
    各种用 yarn 的都用哪个版本?
    Bingchunmoli
        39
    Bingchunmoli  
       2024-11-09 00:22:04 +08:00 via Android
    用 yarn 因为早期 npm 和 cnpm 问题太多了,一直都用 yarn 了
    CLMan
        40
    CLMan  
       2024-11-09 00:22:47 +08:00
    最开始是用 npm ,属于入门阶段。然后尝试了 yarn ,它的特色是`Zero-installs`,但是个人项目用不到。最后尝试了 pnpm ,被它的执行速度和 0 学习成本(对于 npm 的兼容性很好)所吸引,就停在了 pnpm 。

    最近尝试了 bun ,主要是用来当作 TS 的解释器来用,也用来写一些脚本类型的项目,因为它提供的 API 比 Node.js 的 API 更加友好,冷启动速度也更快。

    测试过 bun 和 node.js 在 Linux 作为自己的一个后端 JS 程序的 Runtime ,两者(JIT 暖机后)性能、内存占用基本一致,没什么差距。
    shiny
        41
    shiny  
    PRO
       2024-11-09 01:22:35 +08:00
    bun 从刚出来就开始用。一开始有各种各样的问题,到现在问题很少了。开始在服务器上也运行它。
    只有在兼容性遇到问题才会回退到 pnpm ,再不行才是 npm 。这些情况都很少遇到。
    ByteCat
        42
    ByteCat  
       2024-11-09 01:31:50 +08:00
    之前用 pnpm ,公司项目用 pnpm ,现在自己玩已经换 bun 了,心智负担低
    pcdd
        43
    pcdd  
       2024-11-09 02:14:58 +08:00
    之前 pnpm ,现在 bun
    tnxg
        44
    tnxg  
       2024-11-09 02:14:58 +08:00
    pnpm ,速度快,报错相对较少 www
    pcdd
        45
    pcdd  
       2024-11-09 02:18:48 +08:00
    2024 了,推荐用更现代的 bun
    subframe75361
        46
    subframe75361  
       2024-11-09 08:56:15 +08:00
    小项目 bun ,大一些的用 pnpm
    54xavier
        47
    54xavier  
       2024-11-09 11:15:08 +08:00
    @xlinux 不是对比,是箭头路径的意思,就是说我从 npm 换了一圈最后还是换回了 npm
    xlinux
        48
    xlinux  
       2024-11-09 11:28:59 +08:00
    @54xavier 那跟 NRM 有啥关系?
    wuoty
        49
    wuoty  
       2024-11-09 13:03:31 +08:00 via Android
    用 yarn ,之前用 npm 的时候一些大项目下,性能跟不上,总是卡半天; pnpm 在处理依赖会有些问题,要么就是版本冲突,依赖找不到,要么就是打包的时候丢东西
    siweipancc
        50
    siweipancc  
       2024-11-09 14:08:22 +08:00 via iPhone
    用其他包管理器发现依赖处理有问题。
    作者:我只保证 npm
    uni
        51
    uni  
       2024-11-09 14:23:46 +08:00   1
    优先用 bun ,出问题了再用 pnpm
    现在看到一个项目还在用 yarn 就会下意识地觉得这个项目已经过时了,会失去对这个项目的好感
    perfectlife
        52
    perfectlife  
       2024-11-09 16:10:19 +08:00 via Android
    @fov6363 插个题外话 monorepo 做 cicd 痛苦啊
    Terry05
        53
    Terry05  
       2024-11-09 17:37:44 +08:00
    一用上 pnpm 就离不开了,速度快,提示信息友好,说是能节省磁盘空间,懒得去考证,但看到 node_modules 里很多库都是软链接的,相信是能节省空间

    当然,还有秒开 monorepos ,用起来太过于舒服
    crocoBaby
        54
    crocoBaby  
       2024-11-13 11:50:40 +08:00
    如果涉及到 cicd 的流水线的话,还是推荐 npm,yarn 其他 pnpm,bun 很多平台都不支持
    wangtian2020
        55
    wangtian2020  
       2024-11-19 09:28:25 +08:00
    用 npm 。
    我不会遇到 npm 装不上包的问题。nrm 切 mirror 地址,遇到 github 资源下不动的直接 tun 模式代理启动。
    没感觉到有装包慢的问题,和 java 比下载 jar 包文件大编译又慢的 maven 体验好太多了。
    guobaxiong
        56
    guobaxiong  
       2024-11-27 15:34:24 +08:00
    坚持 NPM 一百年不动摇
    andyhu
        57
    andyhu  
       348 天前
    如果是 node 就用 pnpm ,当然 bun 比 node + npm 好用很多,单纯从包管理来看 deno 比前面俩都好
    sn0wdr1am
        58
    sn0wdr1am  
       322 天前
    推荐 PNPM
    sch1111878
        59
    sch1111878  
       313 天前
    在 wsl 用的话, pnpm 会有各种问题, 依赖不同步
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     999 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 18:48 PVG 02:48 LAX 10:48 JFK 13:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86