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

yarn 和 npm 真的区别很大嘛

  •  
  •   Zwying · 97 天前 · 3000 次点击
    这是一个创建于 97 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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


    所以,用 npm 发现依赖错误的时候,不妨试试 yarn 。
    Bingchunmoli
        34
    Bingchunmoli  
       96 天前 via Android
    早期使用的时候特别大,现在不够明显了,之前 npm i 然后 error 看不懂,yarn 要是 securess 要么一行英文翻译一下就知道是什么错误了
    Showfom
        35
    Showfom  
       96 天前
    nodejs 16 开始已经自带 yarn 了
    luohechen
        36
    luohechen  
       94 天前
    @LiuJiang 其实 yarn 的 barry 版本或者最新的 3 还是和 npm 差别很大的,默认是 1.x 版本
    luohechen
        37
    luohechen  
       94 天前
    @DOLLOR yarn 2.x 以上版本是这样的,装包的时候在 node_modules 里面下载的是压缩包,然后编译的时候会按需展开,这些压缩包可以直接传到 github
    SekiBetu
        38
    SekiBetu  
       77 天前
    装 corepack ,通过 `corepack prepare 管理器 @版本 --activate` 来切换版本用,corepack 默认在新版 nodejs 内置, `corepack enable` 即可开启,默认内置了 npm 、yarn 、pnpm ,nodejs 未来的大趋势就是解耦,不再内置 npm ,让 corepack 发挥包管理器功能,corepack 命令成为默认的"npm"来切换三个包管理器
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1510 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 00:40 · PVG 08:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.