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 · 2022-07-24 22:39:36 +08:00 · 11906 次点击
    这是一个创建于 844 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    日出东方, 唯 npm[手动狗头]
    DOLLOR
        42
    DOLLOR  
       2022-07-25 10:59:26 +08:00   ❤️ 1
    我选择 node_modules.7z🐶
    TomPig0216
        43
    TomPig0216  
       2022-07-25 11:08:00 +08:00
    pnpm + 1
    darkengine
        44
    darkengine  
       2022-07-25 11:17:56 +08:00
    $ yarn --version
    1.22.18

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

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

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

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

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

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

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

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

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