yarn 和 npm 真的区别很大嘛 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Zwying
V2EX    问与答

yarn 和 npm 真的区别很大嘛

  •  
  •   Zwying 2022-07-01 18:07:46 +08:00 5470 次点击
    这是一个创建于 1201 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上课时老师说 yarn 是最好用的,有点半信半疑

    38 条回复    2022-07-22 05:33:33 +08:00
    IvanLi127
        1
    IvanLi127  
       2022-07-01 18:10:07 +08:00
    2022 年了,我觉得 npm 挺好的。
    MEIyiyi
        2
    MEIyiyi  
       2022-07-01 18:11:04 +08:00 via Android
    说最,那肯定是错的,只能说在当下还算好
    walpurgis
        3
    walpurgis  
       2022-07-01 18:11:54 +08:00 via iPhone
    pnpm 不服
    sadfQED2
        4
    sadfQED2  
       2022-07-01 18:13:07 +08:00 via Android
    一直不知道有啥区别,从来都是 npm install
    Leviathann
        5
    Leviathann  
       2022-07-01 18:25:15 +08:00
    新项目我用 pnpm
    Kaciras
        6
    Kaciras  
       2022-07-01 18:27:05 +08:00
    都是垃圾,用 pnpm
    christin
        7
    christin  
       2022-07-01 18:30:24 +08:00 via iPhone
    pnpm 好用 但是不知道为什么用 pnpm 装的包就起不来 用 yarn 就可以
    ryougifujino
        8
    ryougifujino  
       2022-07-01 18:34:47 +08:00
    新项目首选 pnpm
    tcpdump
        9
    tcpdump  
       2022-07-01 18:37:32 +08:00
    听说前端开发 hello world 都是几百 M
    FrankAdler
        10
    FrankAdler  
       2022-07-01 18:59:19 +08:00
    不是职业前端,感觉差不多,都说 yarn 快,貌似也快不到哪去,反正还是一堆 warning ,一堆 deprecat ,然后 npm run 起来就完了
    des
        11
    des  
       2022-07-01 19:04:57 +08:00 via iPhone   2
    @tcpdump 你要硬说,后端还没写代码也得先下好几百 M 的东西
    v23x
        12
    v23x  
       2022-07-01 19:05:44 +08:00
    都是垃圾 我用 pnpm
    2218675712
        13
    2218675712  
       2022-07-01 20:38:26 +08:00
    实际体验 yarn 有问题
    yarn 安装依赖的时候会校验全部的依赖项目,如果电脑硬盘是机械硬盘会非常卡顿
    如果网络不好导致校验失败,会导致所安装的依赖装不上(npm 安装单个依赖不会校验)

    个人感觉实际体验 npm 要比 yarn 好太多了
    server
        14
    server  
       2022-07-01 21:33:44 +08:00
    pnpm +1
    shakaraka
        15
    shakaraka  
    PRO
       2022-07-01 21:48:42 +08:00
    pnpm +2
    LiuJiang
        16
    LiuJiang  
       2022-07-01 22:12:32 +08:00   2
    yarn 和 npm 没啥区别,两者都是不断的构建 node_modules ,每个项目都会构建一份 node_modules ,这些包里面如果有 node_modules 就会递归的构建下去,磁盘占用特别大,pnpm 作者就看不下去了,说 yarn 搞了个这么玩意,我得改变下格局,ok ,搞了个 pnpm ,pnpm 字面意思就是 performant npm ,而 pnpm 安装的包会存储在可寻址的磁盘中,在多个项目同时引用时,只需要用一个硬链接指向该地址就可以使用,大大节约了磁盘空间,提高了效率
    yazoox
        17
    yazoox  
       2022-07-01 22:23:17 +08:00 via Android
    @LiuJiang 只节省了硬盘空间么?工作电脑,不差那点硬盘空间!
    dumbass
        18
    dumbass  
       2022-07-01 22:38:12 +08:00 via iPhone
    如果不是有些库比如 taro 用 pnpm 会出现依赖丢失问题,我肯定不会用 yarn 的。
    LiuJiang
        19
    LiuJiang  
       2022-07-01 22:59:52 +08:00
    @yazoox 一看你就不是资深技术民工
    dcsuibian
        20
    dcsuibian  
       2022-07-01 23:16:41 +08:00
    你安装后用用看就知道了,官网总共就几个命令。

    这东西相比于 npm 的最大优点就是快(网络问题不归他管),但没有啥 yarn 能干而 npm 干不了的,你要用 npm 完全可以继续用。
    npm 作为 nodejs 捆绑,泛用性强,也是首要支持考虑。比如你给别人写 Readme ,那 npm install 肯定优先。yarn 配合 nvm 还有些小问题。
    foam
        21
    foam  
       2022-07-01 23:21:11 +08:00
    @yazoox #17 节省的主要是时间,例如原本需要 30 秒安装 node_module ,用 pnpm 可能只要 5 秒。
    缓解了我的暴脾气
    AV1
        22
    AV1  
       2022-07-01 23:22:21 +08:00
    node_modules 只有安装的时候会变化,而构建、开发的时候并不会变化。

    作为开发者,挺喜欢每个项目自带一个 node_modules ,这样的好处是,安装好后直接打包一个 node_modules.7z
    随便换一台电脑都能 3 分钟解压,立刻恢复所有依赖,不需要再次安装。
    dcsuibian
        23
    dcsuibian  
       2022-07-01 23:27:03 +08:00   3
    前端包管理器是真的垃圾,一言不合就整个新库新工具,割裂。
    npm / yarn / pnpm ,后两者纯粹是为了解决快的问题,为什么不能给 npm 来个版本升级呢?
    nrm / cyarn / cnpm / cpnpm ,就是换源,不会调设置项?

    以前我还会给人推荐 yarn ,现在我建议直接 npm 。别跟他们瞎折腾。
    gouflv
        24
    gouflv  
       2022-07-02 00:26:04 +08:00 via iPhone
    别信你这什么老师,误人子弟
    daliusu
        25
    daliusu  
       2022-07-02 00:40:25 +08:00
    yarn 和 npm 我倒觉得没太大区别,npm5 还是几之后已经提升挺快了,而且这个主要影响感觉还是梯子。提升比较大的是 pnpm ,这个甚至可能你要重新装半天依赖
    ecnelises
        26
    ecnelises  
       2022-07-02 00:40:40 +08:00 via iPhone
    pnpm 在 Mac 上好像已经不是用硬链接了,而是直接 clone 文件( https://github.com/pnpm/pnpm/issues/1505 ),因为 APFS 有 CoW 机制,所以硬盘上实际只存一份,改动某个文件不会影响其他版本
    GeruzoniAnsasu
        27
    GeruzoniAnsasu  
       2022-07-02 01:04:04 +08:00   1
    npm cnpm pnpm 都遇到过依赖装不上的破问题
    选 yarn 是因为暂时没遇到幺蛾子

    贵生态圈是真的一言难尽
    Trim21
        28
    Trim21  
       2022-07-02 01:17:31 +08:00
    不写大型 JS 项目。yarn 比 npm 麻烦的地方在于 yarn 装新包的时候就算不影响 node_modules 里面某个可执行文件原本的依赖,也得关掉程序装完了再重启。但是 npm 就无所谓。
    Vegetable
        29
    Vegetable  
       2022-07-02 03:26:26 +08:00
    没有历史包袱的话,直接用最新最流行的技术就好了。pnpm 不会错的。
    Biwood
        30
    Biwood  
       2022-07-02 08:41:27 +08:00 via iPhone   1
    每家公司业务场景、开发模式不同,老老实实用 npm 完全没问题。真到问题多了,你自然会开始尝试别的东西。

    前端开发最大的问题就是发展快,工具多,很多人喜欢跟风,凭感性做判断,甚至可能捡了芝麻丢了西瓜。你得明白这是做技术,讲究逻辑、实用,而不是去餐厅点菜。
    lmoon
        31
    lmoon  
       2022-07-02 12:19:49 +08:00 via Android
    都是垃圾,我用 pnpm
    binhb
        32
    binhb  
       2022-07-02 14:25:57 +08:00 via iPhone
    感觉 yarn 确实快一点
    反正,有问题就是 yarn npm 混着试
    不过,我现在新项目都是用 pnpm
    encro
        33
    encro  
       2022-07-02 16:51:54 +08:00
    昨天一个 vue3 项目,

    npm: 安装完成,运行报依赖的项目代码错误;

    yarn:请使用 nodejs 14 以后版本。


    所以,用 npm 发现依赖错误的时候,不妨试试 yarn 。
    Bingchunmoli
        34
    Bingchunmoli  
       2022-07-02 17:21:56 +08:00 via Android
    早期使用的时候特别大,现在不够明显了,之前 npm i 然后 error 看不懂,yarn 要是 securess 要么一行英文翻译一下就知道是什么错误了
    Showfom
        35
    Showfom  
    PRO
       2022-07-02 19:12:38 +08:00
    nodejs 16 开始已经自带 yarn 了
    luohechen
        36
    luohechen  
       2022-07-04 10:24:24 +08:00
    @LiuJiang 其实 yarn 的 barry 版本或者最新的 3 还是和 npm 差别很大的,默认是 1.x 版本
    lohechen
        37
    luohechen  
       2022-07-04 10:28:19 +08:00
    @DOLLOR yarn 2.x 以上版本是这样的,装包的时候在 node_modules 里面下载的是压缩包,然后编译的时候会按需展开,这些压缩包可以直接传到 github
    SekiBetu
        38
    SekiBetu  
       2022-07-22 05:33:33 +08:00
    装 corepack ,通过 `corepack prepare 管理器 @版本 --activate` 来切换版本用,corepack 默认在新版 nodejs 内置, `corepack enable` 即可开启,默认内置了 npm 、yarn 、pnpm ,nodejs 未来的大趋势就是解耦,不再内置 npm ,让 corepack 发挥包管理器功能,corepack 命令成为默认的"npm"来切换三个包管理器
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5470 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 08:03 PVG 16:03 LAX 01:03 JFK 04:03
    Do have faith in what you're doing.
    ubao 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