Zwying
V2EX  ›  问与答

yarn 和 npm 真的区别很大嘛

  •  
  •   Zwying · Jul 1, 2022 · 6647 views
    This topic created in 1595 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

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


    所以,用 npm 发现依赖错误的时候,不妨试试 yarn 。
    Bingchunmoli
    Bingchunmoli
    Jul 2, 2022 via Android
    34
    早期使用的时候特别大,现在不够明显了,之前 npm i 然后 error 看不懂,yarn 要是 securess 要么一行英文翻译一下就知道是什么错误了
    Showfom
    Showfom
    PRO
    Jul 2, 2022
    35
    nodejs 16 开始已经自带 yarn 了
    luohechen
    luohechen
    Jul 4, 2022
    36
    @LiuJiang 其实 yarn 的 barry 版本或者最新的 3 还是和 npm 差别很大的,默认是 1.x 版本
    luohechen
    luohechen
    Jul 4, 2022
    37
    @DOLLOR yarn 2.x 以上版本是这样的,装包的时候在 node_modules 里面下载的是压缩包,然后编译的时候会按需展开,这些压缩包可以直接传到 github
    SekiBetu
    SekiBetu
    Jul 22, 2022
    38
    装 corepack ,通过 `corepack prepare 管理器 @版本 --activate` 来切换版本用,corepack 默认在新版 nodejs 内置, `corepack enable` 即可开启,默认内置了 npm 、yarn 、pnpm ,nodejs 未来的大趋势就是解耦,不再内置 npm ,让 corepack 发挥包管理器功能,corepack 命令成为默认的"npm"来切换三个包管理器
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1944 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 15:41 · PVG 23:41 · LAX 07:41 · JFK 10:41
    ♥ Do have faith in what you're doing.