V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Zwying
V2EX  ›  问与答

yarn 和 npm 真的区别很大嘛

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

    上课时老师说 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
    wunonglin
        15
    wunonglin  
       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 只节省了硬盘空间么?工作电脑,不差那点硬盘空间!
    bojackhorseman
        18
    bojackhorseman  
       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 秒。
    缓解了我的暴脾气
    DOLLOR
        22
    DOLLOR  
       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  
       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 版本
    luohechen
        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   ·   实用小工具   ·   4444 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:56 · PVG 11:56 · LAX 19:56 · JFK 22:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.