V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
king888
V2EX  ›  程序员

哎,前端的包管理有那么一点割裂

  •  
  •   king888 · 2023-03-02 09:38:39 +08:00 · 5665 次点击
    这是一个创建于 636 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • npm
    • yarn v1
    • yarn v2
    • pnpm

    不同的项目对不同的包管理选择的情况是不同:

    • 可能用户常用的是 pnpm ,但是 a 项目对 pnpm 支持不友好,又或者 b 项目用的 pnpm ,但是用户常用的是 yarn
    • 又或者老项目用的 yarn v1 ,听说 yarn v2 新特性不错想试试,结果我是十有八九都需要手动调整费事费力,直接放弃
    • 新项目当然想用新的包管理,新的特性
    • 综上所述,电脑里不把这些七龙珠集齐都不好意思了
    • 如果对电脑有点洁癖什么,需要自定义全局缓存位置什么的,各个包管理文档配置什么的又要找遍
    • 没有统一的包管理,这么割裂的情况还是比较考验耐心的
    38 条回复    2023-03-03 13:09:48 +08:00
    cheneyzhang
        1
    cheneyzhang  
       2023-03-02 09:44:28 +08:00
    只要运维愿意配合,前端可以做到同一个公司下统一包管理工具的
    GreatAuk
        2
    GreatAuk  
       2023-03-02 09:44:32 +08:00   ❤️ 8
    💡 Use the right package manager: https://github.com/antfu/ni
    theprimone
        3
    theprimone  
       2023-03-02 09:47:37 +08:00
    @GreatAuk 哈哈哈,我在公司安利好久终于不少人用上了
    theprimone
        4
    theprimone  
       2023-03-02 09:48:48 +08:00
    另外 yarn v2 很久以前尝试升级过,各种折腾结果项目都起不来,索性没碰过了。
    renmu
        5
    renmu  
       2023-03-02 09:52:27 +08:00 via Android
    项目下是哪个 lock 就跑哪个,能跑起来就行
    wangtian2020
        6
    wangtian2020  
       2023-03-02 09:53:47 +08:00
    一直用 npm ,配合 nrm 设置 proxy ,没啥体验问题
    bjfane
        7
    bjfane  
       2023-03-02 10:08:33 +08:00
    @GreatAuk ni 只是解决命令的问题,对我来说各种工具命令没什么 仓库有好几个在我的 ssd 上 我就想吐。

    顺便说一下 pnpm 在 6 ~ 7 版本改过默认路径,有可能你的电脑上 pnpm store 有两个,
    macos 的话 /Users/xxxx/.pnpm-store 老路径
    /Users/xxx/Library/pnpm/store/v3 新路径
    gam2046
        8
    gam2046  
       2023-03-02 10:18:10 +08:00
    VS Code Remote in Container 可以变相的解决这个问题。毕竟都相互隔离开了。
    hhjswf
        9
    hhjswf  
       2023-03-02 10:43:07 +08:00 via Android   ❤️ 2
    前端娱乐圈
    cmdOptionKana
        10
    cmdOptionKana  
       2023-03-02 10:53:09 +08:00
    这算割裂?好歹还是围绕 js/ts ,一共也就这么几个东西。后端呢?后端光是语言就几十种,主流的也有近 10 种,每种语言又可能有多种包管理。

    如果因此就说前端是娱乐圈,那后端是啥?
    jqtmviyu
        11
    jqtmviyu  
       2023-03-02 10:55:03 +08:00
    现在一般不用 yarn 了, npm 后来不也支持扁平树 /离线安装 /lockfile 了吗?
    有什么特性是 yarn 显著比 npm 领先的吗?
    能用 pnpm 就 pnpm, 不能就 npm
    dcsuibian
        12
    dcsuibian  
       2023-03-02 10:57:29 +08:00   ❤️ 1
    前端一般是:这个库已经烂了,别维护了,另开个新的吧
    9ki
        13
    9ki  
       2023-03-02 10:58:34 +08:00
    确定蛋疼, 但是不可否认的是每个技术都有其解决的痛点, 其实普通开发者会 `npm install` 和 `yarn` 完全足够了, 其他的技术当你需要他的时候再去使用也不迟.

    不过就像楼主说的, 每个包管理器缓存很难管理, 特别是我这种就 256G 储存空间, 每月都要手动清理一次.
    xqk111
        14
    xqk111  
       2023-03-02 11:16:42 +08:00
    都用过,还在回到 npm ,兼容性好点,
    xqk111
        15
    xqk111  
       2023-03-02 11:17:54 +08:00
    @9ki pnpm 设计就是解决这个问题,我现在电脑里也是一大堆 node_modules ,npm 设计之初可能没考虑到这个事情吧
    vivipure
        16
    vivipure  
       2023-03-02 11:28:24 +08:00
    用 pnpm 把,比较省空间。
    mmc
        17
    mmc  
       2023-03-02 11:36:29 +08:00   ❤️ 8
    我觉得好的包管理器应该是安装时可以很顺畅,可以直接拉编译好的二进制文件,而不是用我的电脑在跑一次编译。每次看到旧项目,想要试一下,npm install 突然来个要编译的包,要装各种库,最后编译还崩溃了,说的就是你:node-sass!
    king888
        18
    king888  
    OP
       2023-03-02 12:07:02 +08:00
    @cmdOptionKana
    就拿前端的包管理跟 golang 的对比吧,别人说娱乐圈,是有道理的
    wu67
        19
    wu67  
       2023-03-02 12:18:37 +08:00
    npm 大法好. 包管理各种层出不穷, 什么 cnpm yarn pnpm, 但是你看 npm 退出舞台了吗?
    yinzhili
        20
    yinzhili  
       2023-03-02 13:31:30 +08:00   ❤️ 1
    @cmdOptionKana 前端写好项目,过个两年后再去编译时,出错的概率非常高,后端显然没有这么恶心的问题
    duan602728596
        21
    duan602728596  
       2023-03-02 13:33:08 +08:00
    锁定包管理器,请用 corepack: https://github.com/nodejs/corepack
    关于 node-sass ,官方已经警告废弃了,并且已经推荐了好几种方案,包括迁移到 sass ,配置各种参数等: https://github.com/sass/node-sass#binary-configuration-parameters ,几分钟就能搞定的东西。
    DKburNIng
        22
    DKburNIng  
       2023-03-02 14:02:38 +08:00
    @duan602728596 几分钟我连这个 readme 都看不完
    Jirajine
        23
    Jirajine  
       2023-03-02 14:05:57 +08:00
    @GreatAuk 这玩意的别名搞太多,和很多命令冲突了。
    nix 和 nu 都是已有的程序。
    HugoChao
        24
    HugoChao  
       2023-03-02 14:09:01 +08:00
    用着都大差不差
    eryajf
        25
    eryajf  
       2023-03-02 14:46:12 +08:00
    @yinzhili 对于这个说法比较能感同身受,同类的还有 Python ,之前就是因为安装过几个 Python 的开源项目,给折腾怕了
    weijancc
        26
    weijancc  
       2023-03-02 15:00:15 +08:00
    @wu67 npm 是默认的肯定使用范围最广, 没了解过其他的就别发言.
    learningman
        27
    learningman  
       2023-03-02 15:01:27 +08:00
    不错了,至少这一堆都能读 package.json
    反面样例参考 C++
    horou
        28
    horou  
       2023-03-02 16:56:02 +08:00
    我觉得 yarn3 挺好的,速度快,省存储,就是别的很多项目用不了,我自己的项目到是挺顺畅的。
    Justin13
        29
    Justin13  
       2023-03-02 17:38:46 +08:00 via Android
    我只想用 npn,奈何。。。
    salmon5
        30
    salmon5  
       2023-03-02 18:09:53 +08:00
    @cheneyzhang #1 和运维有个毛关系
    justin2018
        31
    justin2018  
       2023-03-02 18:12:19 +08:00
    老哥们 有啥靠谱的 node_modules 清理工具

    求推荐
    um1ng
        32
    um1ng  
       2023-03-02 19:44:40 +08:00
    运维应该只配置 npm 的
    um1ng
        33
    um1ng  
       2023-03-02 19:56:52 +08:00
    @GreatAuk antfu 的好东西
    Lqxc
        34
    Lqxc  
       2023-03-02 22:28:19 +08:00 via Android
    可以使用 nix 解決你的問題
    lete
        35
    lete  
       2023-03-02 23:18:11 +08:00
    我一直都是用 npm+mini-nrm ,反正 npm YYDS 就对了,pnpm 节省空间?我又不缺空间
    adoyle
        36
    adoyle  
       2023-03-03 00:32:16 +08:00
    你可以用 corepack 解决你的问题。node 14.19.0 和 v16.9.0 起就自带了 corepack ,之前的版本可以通过 `npm install -g corepack` 安装。
    你可以在 Docker 容器里运行 corepack 来安装项目依赖,这样就不污染本机开发环境了。
    Gav1nw
        37
    Gav1nw  
       2023-03-03 00:50:26 +08:00
    不过我记得 yarn 只是优化 NPM 当年不能多线程的问题吧,最终还是下载到 node_module 文件夹呀
    iulo
        38
    iulo  
       2023-03-03 13:09:47 +08:00
    @justin2018 npkill
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:16 · PVG 06:16 · LAX 14:16 · JFK 17:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.