推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
bthulu

2022 年了, 还在用 yarn 吗?

  •  
  •   bthulu · Jul 24, 2022 · 13842 views
    This topic created in 1573 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

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

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

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