V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
bthulu
V2EX  ›  JavaScript

2022 年了, 还在用 yarn 吗?

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

    yarn 花了这么多精力去搞 2.0,3.0 版本, 1.x 几乎停滞不前. npm 是不是已经吊打 yarn1.x 了?

    95 条回复    2022-07-26 18:36:53 +08:00
    shakukansp
        1
    shakukansp  
       192 天前
    还 yarn 呢,现在流行 pnpm
    ByteCat
        2
    ByteCat  
       192 天前
    pnpm 爽得一批,yarn 还不如用 npm
    fpure
        3
    fpure  
       192 天前
    我用 npm
    wunonglin
        4
    wunonglin  
       192 天前
    pnpm
    helone
        5
    helone  
       192 天前   ❤️ 1
    pnpm
    bojue
        6
    bojue  
       192 天前
    @ByteCat yarn 的缓存和并发请求不比 npm 好用?
    dcoder
        7
    dcoder  
       192 天前   ❤️ 1
    pnpm, 晃眼一看以为是 pxxn 站
    你们前端这么折腾有意思么 XD
    swift
        8
    swift  
       192 天前 via iPhone
    @ByteCat 爽点在哪呢
    ericgui
        9
    ericgui  
       192 天前
    @ByteCat 同问,怎么个爽法
    qianxi0410
        10
    qianxi0410  
       192 天前   ❤️ 9
    都什么年代了还在用传统包管理
    GreatAuk
        11
    GreatAuk  
       192 天前
    @ericgui @qianxi0410 对我来说就是快,然后自带简单实用的 monorepo 。
    zhuweiyou
        12
    zhuweiyou  
       192 天前
    今天用 bun 了
    Dragonphy
        13
    Dragonphy  
       192 天前
    @qianxi0410 #10
    1 ,5
    christin
        14
    christin  
       192 天前 via iPhone
    我也不想用,但离谱的是同一个项目,用 yarn 装依赖就能跑起来,用 pnpm 就跑不动。
    dk7952638
        15
    dk7952638  
       192 天前
    yarn2 很牛逼很先进,自己定义了一套规范,和 bazel 一样需要强插使用者,所以我不看好 Yarn2 ,pnpm 是比较好的选择
    theprimone
        16
    theprimone  
       192 天前
    theprimone
        17
    theprimone  
       192 天前
    最近还发现一个 pnpm 的优点,之前使用 patch-package 这个包修改 node_modules 中的代码,pnpm 直接支持 patch
    命令修改,yarn v2 也支持,然而很久前用 v2 给我整懵了,现在默认都用 pnpm 了。
    hoopan
        18
    hoopan  
       192 天前
    我们公司用的 yarn ,如果用 npm 代码有 bug ,据说安装依赖的版本问题。
    Chingim
        19
    Chingim  
       192 天前 via iPhone
    @zhuweiyou bun 不是运行时吗,怎么跟包管理器相比?
    zhuweiyou
        20
    zhuweiyou  
       192 天前   ❤️ 1
    @Chingim #19 一体化的, 包含 pkg manager + devserver + bundle + runtime , bun install 的速度在我机器上比 npm 快两倍多
    zhuweiyou
        21
    zhuweiyou  
       192 天前
    @Chingim #19 可以只当包管理来用
    Chingim
        22
    Chingim  
       192 天前 via iPhone
    @zhuweiyou soga
    superchijinpeng
        23
    superchijinpeng  
       192 天前
    pnpm
    moreant
        24
    moreant  
       192 天前
    pnpm
    yekern
        25
    yekern  
       192 天前
    有墙都一样,该下载不下来一样下载不下来, 没墙都差不多.
    suyuyu
        26
    suyuyu  
       192 天前
    pnpm +1
    1543544726zy
        27
    1543544726zy  
       192 天前
    why not all in docker 。你们问题依然是环境问题。环境问题当然是上大招啊。
    stoluoyu
        28
    stoluoyu  
       192 天前
    pnpm ,主要是省磁盘空间。
    xiaojun1994
        29
    xiaojun1994  
       192 天前
    第一次用 pnpm 报错后就再也没有尝试
    ltruntu
        30
    ltruntu  
       192 天前   ❤️ 3
    都是垃圾 有啥区别
    EvilDevilJin
        31
    EvilDevilJin  
       192 天前
    我选 pnpm
    lanbatian
        32
    lanbatian  
       192 天前
    啊 我还在用 yarn...
    sks4728
        33
    sks4728  
       192 天前
    前端真是折腾
    ryougifujino
        34
    ryougifujino  
       192 天前
    已全面转向 pnpm 。
    gongquanlin
        35
    gongquanlin  
       192 天前
    很多环境 npm 装上异常,yarn 一把梭哈,完美的很
    dablwow
        36
    dablwow  
       192 天前
    @christin #14 大概率是代码依赖了 phantom dependencies ,可以用 16 楼的解决方案
    wangyzj
        37
    wangyzj  
       192 天前
    npm 因为少按一个字母
    xcatliu
        38
    xcatliu  
       192 天前
    pnpm +1
    zed1018
        39
    zed1018  
       192 天前
    我之前的 yarn create-react-app 的项目转 pnpm 直接弄依赖不全,也懒得折腾了。反正过几年说不定还流行什么呢。
    yx1989
        40
    yx1989  
       192 天前
    点进来之前还以为是 Hadoop Yarn
    wu67
        41
    wu67  
       192 天前   ❤️ 3
    前几年吹 yarn, 现在又吹 pnpm, 但这么多年过去了, 你看 npm 死了没?

    日出东方, 唯 npm[手动狗头]
    DOLLOR
        42
    DOLLOR  
       192 天前   ❤️ 1
    我选择 node_modules.7z🐶
    TomPig0216
        43
    TomPig0216  
       192 天前
    pnpm + 1
    darkengine
        44
    darkengine  
       192 天前
    $ yarn --version
    1.22.18

    咋了有问题吗
    bk201
        45
    bk201  
       192 天前   ❤️ 7
    前端真有意思,包管理都能玩出花。这些包管理区别是啥?
    wangtian2020
        46
    wangtian2020  
       192 天前
    还在用 npm(nrm 管理镜像),因为用了两年了暂时还没感受痛点和痒点
    wolfie
        47
    wolfie  
       192 天前
    前端娱乐圈
    lin07hui
        48
    lin07hui  
       192 天前   ❤️ 1
    pnpm 不能使用包中的依赖包,如:不能使用 vue 中 @vue/runtime-core 的。要查 vue 中使用的 @vue/runtime-core 版本,再 pnpm add -D @vue/[email protected]版本
    Seanfuck
        49
    Seanfuck  
       192 天前   ❤️ 1
    前端早就比 java 还折腾了,没什么要求限制的话还是 jquery 一把梭吧,给头上多留几根头发。
    darkengine
        50
    darkengine  
       192 天前
    @Seanfuck jQuery 到 vue, react, angular 还是有必要的,jquery 遇到复杂的前端逻辑维护起来要哭。至于 npm, yarn 这些工具还真不知道有啥好争的。
    uni
        51
    uni  
       192 天前   ❤️ 1
    好久没关注原来已经这么多人用 pnpm 了么,那感觉下次可以尝试一下了
    christin
        52
    christin  
       192 天前 via iPhone
    @dablwow
    @theprimone 感谢 我试一下
    pkwenda
        53
    pkwenda  
       192 天前
    非前端,pnpm 用过,感觉也就用个 install ,我也不知道爽在哪
    devwolf
        54
    devwolf  
       192 天前
    pnpm 更直观的优点——在我这边被上级指示取缔 yarn 的理由是“打包能更快”。但是项目从 yarn 迁移到 pnpm 需要做很多配置适配,这个 webpack 理解不深的应该搞不来,至少我不行,这个是我这边前端 leader 搞定的。
    MAGA2022
        55
    MAGA2022  
       192 天前
    pnpm 好好做包管理还行,非要弄个 node 版本管理,大包大揽,不喜欢
    magicdawn
        56
    magicdawn  
       192 天前
    yarn2 用着用着出问题了, 搜 issue 也搜不到, 解决不了
    切到 pnpm, 再没出过我自己解决不了的问题...
    shuimugan
        57
    shuimugan  
       192 天前
    用 Node.js 写后端,习惯用 yarn 了,反正上生产都是用 pkg 打成二进制的。
    magicdawn
        58
    magicdawn  
       192 天前
    关于 npm 比 pnpm 少打一个字母, 你就不会加 alias 么 :)

    https://github.com/magicdawn/magicdawn/issues/48#issuecomment-1193089536

    ```zsh
    # pnpm
    alias p="pnpm"

    # short
    alias pt="pnpm test"
    alias pd='pnpm dev'
    alias pb='pnpm build'
    alias pi='pnpm install'

    alias pa='pnpm add'
    alias pad='pnpm add -D'
    alias pag='pnpm add -g'
    alias pagp='pnpm add -g pnpm' # update pnpm self

    alias pnpm_add='pnpm add'
    alias pnpm_add_d='pnpm add -D'
    alias pnpm_add_g='pnpm add -g'
    alias pnpm_add_g_pnpm='pnpm add -g pnpm' # update pnpm self

    # alias padt='pnpm add -D @types/'
    # alias pnpm_add_d_types='pnpm add -D @types/'
    # https://stackoverflow.com/questions/38558401/add-prefix-and-suffix-to-in-bash
    fuction pnpm_add_d_types(){
    echo $" [exec]: pnpm add -D "${@/#/@types/}""
    pnpm add -D "${@/#/@types/}"
    }
    alias padt="pnpm_add_d_types"


    ## mocha
    alias pmo="pnpm mocha"
    alias pmocha="pnpm mocha"
    alias pmod="pnpm mocha --inspect-brk"
    alias pmochad="pnpm mocha --inspect-brk"
    ```
    ByteCat
        59
    ByteCat  
       192 天前
    @bojue #6
    @swift #8
    @ericgui #9

    - 如果说 yarn1 比 npm 更快的话,pnpm 的 统一下载 + 软链 方式更是快得多,基本上两三秒就完成了所有依赖的安装,几乎不需要等待(在 Windows 上尤为显著,这也是我换用 pnpm 的主要原因);
    - yarn3 的问题很多,之前就算安装 cra 的依赖,也无法启动项目,用过一次,改动也很大,网上的教程如果使用 yarn ,那么基本都是指 yarn1 ;
    - 现在很多开源项目中都出现了使用 pnpm 安装的说明(例如 Vite ),用的人也越来越多了。

    缺点:
    - 对 pnpm 最好用在新的项目中,因为锁定依赖使用的是自有的 `pnpm-lock.yaml`。

    其他:
    - 选用哪个包管理器比较主观,可以自行下载来试一下。
    qfdk
        60
    qfdk  
       192 天前
    @magicdawn #58 alias 劝你还是别搞了。。 记得有个 alias cd="rm -rf" 删库跑路美滋滋
    lneoi
        61
    lneoi  
       192 天前
    已经在搞 4.0 了...
    Ritter
        62
    Ritter  
       192 天前
    @DOLLOR 你赢了
    magicdawn
        63
    magicdawn  
       192 天前
    @qfdk #60 你这就是典型的 "因噎废食"
    hahasong
        64
    hahasong  
       192 天前
    yarn 还没学会又出新工具了 前端学习成本这么高吗
    qfdk
        65
    qfdk  
       192 天前
    @magicdawn #63 no,并不是这样的,因为维护了个老项目,里面的的指令执行起来都怪怪的, 经过查找发现有人把 .bashrc 里面加上了 alias 让人头大。 其实我想说的是 公共服务器还是不要,当然个人开发机器随便。
    kamilic
        66
    kamilic  
       192 天前
    老早就转 pnpm 了,硬盘友好型工具。。
    如果他们用 package-lock.json 来对齐 npm 那就很好了。
    magicdawn
        67
    magicdawn  
       192 天前
    @qfdk #65 这个 topic 下谈啥个人 公共 服务器呢
    qfdk
        68
    qfdk  
       192 天前 via iPhone
    @magicdawn 比如 jenkins 的机器 这样的
    magicdawn
        69
    magicdawn  
       192 天前
    @qfdk #68

    这个 topic 是 "2022 年了, 还在用 yarn 还是 pnpm", 你给扯到 CI 去了

    alias 肯定是日常大量使用啊, 谁没事跑服务器低频使用的情况

    就算是服务器, 如果大量使用, 也不是不行. 在设计好的前提下, 更不容易出错.
    当然你说的 alias cd="rm -rf /" 这种作恶形式必须追责到人. 人品问题
    qfdk
        70
    qfdk  
       192 天前 via iPhone
    @magicdawn 因为永远不了解离职 infra 的人会干些什么... 发现一次就够了. 不好意思我扯远了,看到的朋友提个醒 上手新机器,敲命令前看看 alias
    libook
        71
    libook  
       192 天前
    没正经对比过,一直优先使用 npm ,除非跑不起来且项目说明明确必须使用 yarn 。

    梯子给力一些(或者用个好用的镜像),有问题就删 node_modules ,尽可能利用 lock 文件,能把问题发生的概率显著降低。

    这个问题跟用 docker 关系不大,凡是涉及到第三方依赖的,基本绕不过包管理器,就连打 docker 镜像的时候都经常需要用包管理器装依赖。
    xx6412223
        72
    xx6412223  
       192 天前
    前端就不能把创意搞到 tools 之外吗
    CaptainD
        73
    CaptainD  
       192 天前
    我还以为是 Hadoop Yarn
    fkdog
        74
    fkdog  
       192 天前
    三年没写过 js ,才发现又变天了。。。
    都不用 npm yarn 了么。。又出了个新玩意。。
    qshu
        75
    qshu  
       192 天前
    pnpm
    meteor957
        76
    meteor957  
       192 天前
    pnpm + 1
    Bingchunmoli
        77
    Bingchunmoli  
       192 天前 via Android
    表示 npm 早期报错太多习惯先用 yarn 了
    bthulu
        78
    bthulu  
    OP
       192 天前
    @ByteCat pnpm 在 windows 上真的有用吗? 我试过同硬盘复制一个项目安装, 事后直接看磁盘占用, 只能说勉强能用的样子. 比如说 npm 复制一份安装依赖有 800M, pnpm 复制一份安装也有 500M 多, 但是文件数量反而更多了, 简直鸡肋.
    linux 上看到有人说 pnpm 复制一份安装占用为 0, 不知是真是假
    rodrick
        79
    rodrick  
       192 天前
    react vue angular svelte webpack vite rollup npm yarn pnpm 作为一个前端我都觉得累得慌
    dongtingyue
        80
    dongtingyue  
       192 天前
    前端真的是越来越坑,一个项目代码运行起来都要看运气
    zxCoder
        81
    zxCoder  
       192 天前
    咋又出新的了????我才刚从 npm 换到 yarn
    KeyboardManAnAn
        82
    KeyboardManAnAn  
       192 天前
    @bk201 iOS 开发的包管理器也都有三种, 分别是 CocoaPods, Carthage 和官方的 SPM, 除了给社区制造分裂, 后来者其实每次都是对前者的一点点改进(或倒退
    bthulu
        83
    bthulu  
    OP
       192 天前
    @KeyboardManAnAn 为啥都不喜欢在原来的基础上改进而喜欢另起炉灶呢
    ragnaroks
        84
    ragnaroks  
       192 天前
    @bthulu 大概是上游不接受 PR 吧,不说这些包管理,可能因为本身编码难度低,经常我提个 PR 给我关了然后上游自己写个差不多的补丁,比如 axios 、next-pwa 、jotai 、echart ,累了真的,要不是懒得自己写我也直接 fork 一个出新的了
    shakukansp
        85
    shakukansp  
       192 天前
    mritd
        86
    mritd  
       191 天前 via iPhone
    求求了 不要再乱搞了 搞 CI 的真想哭🥲
    bthulu
        87
    bthulu  
    OP
       191 天前
    @shakukansp 很抱歉, 第一条针对的是 Linux, windows 是用 junctions 实现的. 我看空间占用也不是看的项目下的 node_modules 的大小, 而是直接看磁盘总空间占用大小的. 你每份 1MB, 复制 100 份, linux 下硬链接你去检查这一百份文件夹下的 node_modules 大小都是 1MB, 那么是不是就占用了 100M 呢? 显然不是的, 你直接看磁盘空间占用, 它只增加了 1MB.
    但是回到 windows, 你再看磁盘空间占用, 会发现也没有增加 100M, 而是增加了 60M 以上. 对比 Linux 来说, 几乎就是半成品实验性质的.
    kanlidy
        88
    kanlidy  
       191 天前 via iPhone
    看看开源项目,yarn 有一席之地
    xqk111
        89
    xqk111  
       191 天前
    还是用 npm ,其他两个不咋了解
    zxbutton
        90
    zxbutton  
       191 天前
    我还以为是 apache hadoop yarn
    hunter0122
        91
    hunter0122  
       191 天前
    @DOLLOR 你这个牛
    wisetc
        92
    wisetc  
       191 天前 via iPhone
    就没人用 cnpm 么 dog head
    shakukansp
        93
    shakukansp  
       191 天前
    @bthulu 总之比 npm 好啊
    Jtyczc
        94
    Jtyczc  
       191 天前
    哈哈哈,没写 js 几年,现在居然又换了 pnpm
    JDog
        95
    JDog  
       191 天前
    贵圈儿还真是喜欢造轮子啊...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1748 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 14:11 · PVG 22:11 · LAX 06:11 · JFK 09:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.